我的查询没有插入,我没有收到任何错误。无法弄清楚为什么它没有插入
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);
答案 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;