2010-11-09 5 views
1

мой запрос не вставляет, и я не получаю никаких ошибок. не могу понять, почему это не вставляяmysql query insert issue

foreach($_POST as $key => $value) { 
    $clean[$key] = mysql_real_escape_string($value); 
} 

if(isset($_POST['submit'])) { 
$entry = "INSERT INTO test (Word, Type, Lang, Country, Gender, Advice, y_Advice, Notes, 
EditorNotify, Equiv) 
VALUES('".$clean["word_field"]."', 
'".$clean["type_field"]."', 
'".$clean["lang"]."', 
'".$clean["Country"]."', 
'".$clean["gender"]."', 
'".$clean["advice"]."', 
'".$clean["y_advice"]."', 
'".$clean["Notes"]."', 
'".($clean["Notes"] != '' ? '1' : '')."', 
'".$clean["Equiv"]."')"; 
echo mysql_query ($entry); 
mysql_query ($entry); 
+3

Выполнение 'echo mysql_error();' для просмотра ошибок –

+0

Какой результат из 'echo mysql_error();' после выполнения вашего запроса? http://us3.php.net/manual/en/function.mysql-error.php –

+0

, возможно, вы не входите в условие, потому что $ _POST ['submit'] не задано –

ответ

1

Вы фактически делаете вставку в два раза из-за этого:

echo mysql_query ($entry); 
mysql_query ($entry); 

Линия echo будет запустите запрос, и после него будет строка. Вам нужно избавиться от этого. (хотя я предполагаю, что вы только поместили его там для тестирования?)

Вместо этого я бы предложил только эхо-сигнал $entry, поэтому вы можете увидеть законченную строку SQL. Вы можете сразу заметить что-то не так с запросом.

Если вы этого не сделаете, попробуйте скопировать + вставить эту строку в программу запросов SQL, чтобы увидеть, что такое фактическая ошибка. Это позволит вам играть с запросом, пока вы не получите его правильно.

Вы также можете использовать команду PHP mysql_error(), чтобы получить ошибку из PHP, но когда у вас возникла странная ошибка SQL, ее часто можно быстрее и быстрее играть с запросом напрямую, а не внутри PHP код.

надеюсь, что это поможет.

+0

спасибо, что помогли мне, повторив $ entry Я заметил, что два поля, где не правильно. – acctman

1

Попробуйте заменить:

(Word, Type, Lang, Country, Gender, Advice, y_Advice, Notes, 
EditorNotify, Equiv) 

С:

(`Word`, `Type`, `Lang`, `Country`,`Gender`, `Advice`, `y_Advice`, `Notes`, 
`EditorNotify`, `Equiv`) 
+3

Ни одно из имен столбцов не содержится в списке зарезервированных слов MySQL, t не имеет значения –

+1

@Mark, хотя это всегда стоит того, чтобы это сделать –

1

Вы не знаете, получаете ли вы какие-либо ошибки. Во-первых, избавиться от echo mysql_query(). Затем запустите:

mysql_query($query) or die(mysql_error()); 

If mysql_query() возвращает false, которые он делает в случае отказа, независимо от MySQL сообщение об ошибке запрос сгенерированный теперь будет выведен на экран.

Просто небольшая заметка: вы должны инициализировать $clean с $clean = array();

Если проблема заключается в том, что условно не стрелять, то проблема может быть в другом месте. У вас есть <input> с именем «submit» в вашей форме и является методом формы post?

Сам вопрос выглядит хорошо для меня. Я думаю, что это трудно читать, поэтому я бы это сделал, но это только личный стиль:

$notify = $clean['Notes'] != '' ? '1' : ''; 
$query = <<<SQL 
    INSERT INTO test 
    (Notes, EditoryNotify) 
    VALUES 
    ($clean[Notes], $notify) 

SQL;