mysql查询插入问题

时间:2010-11-09 11:56:36

标签: php mysql

我的查询没有插入,我没有收到任何错误。无法弄清楚为什么它没有插入

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 个答案:

答案 0 :(得分:1)

尝试更换:

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

使用:

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

答案 1 :(得分:1)

你实际上是因为这样做了两次插入:

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

echo行将运行查询,其后的行也将运行。你需要摆脱它。 (虽然我猜你只是把它放在那里用于测试目的?)

而不是那样,我建议只回显$entry本身,这样你就可以看到完成的SQL字符串了。您可能会立即发现查询错误。

如果不这样做,则尝试将该字符串+粘贴到SQL查询程序中,以查看实际错误是什么。这将允许您使用查询,直到您做对了。

您还可以使用PHP命令mysql_error()来解决PHP中的错误,但是当您遇到奇怪的SQL错误时,通常可以更快速,更轻松地直接使用查询而不是在PHP代码中。

希望有所帮助。

答案 2 :(得分:1)

您不知道是否收到任何错误。首先,摆脱echo mysql_query()。然后运行:

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

如果mysql_query()返回false,它会在失败时返回,那么查询生成的任何MySQL错误现在都会打印到屏幕上。

只是一个小问题:您应该使用$clean

初始化$clean = array();

如果问题是条件没有触发,那么问题可能在其他地方。您的表单中是否有<input>名为“提交”,并且是post形式的方法吗?

查询本身对我来说没问题。我认为这很难读,所以我会这样做,但这只是个人风格:

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

SQL;