我试图将数据输入数据库(它是一个反应脚本),但我总是收到错误,这让我发疯了。
这是我正在使用的代码:
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip, plantid) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', $datum_reactie, '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', $id)")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
这似乎不起作用。 但是当我使用以下代码显示数据时:
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip, plantid) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', $datum_reactie, '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', $id)")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
$qry = "INSERT INTO gastenboek (naam, bericht, datum, ip, plantid) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', $datum_reactie, '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', $id)"; echo $qry;
}
所以一切似乎都正确?
答案 0 :(得分:0)
看起来你需要在第三列中的日期值附近引用。
您可能希望使用绑定变量,因为它会使引号更易于使用且更安全(从SQL注入的角度来看)。像这样:
$stmt = mysqli_prepare($db, "INSERT INTO gastenboek (name, bericht, datum, ip, platid) VALUES (?, ?, ?, ?, ?)");
mysqli_stmt_bind_param ($stmt, 'sssss', $_POST['naam'], $_POST['bericht'], $datum_reactie, $_SERVER['REMOTE_ADDR'], $id);
mysqli_stmt_execute($stmt);
答案 1 :(得分:0)
尝试引用您的日期&#39;领域。这可能会为你解决问题。
答案 2 :(得分:0)
您可以使用(http://php.net/manual/en/function.mysql-error.php):
echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
返回mysql的最后一个错误。正如所说的Lashane把'$ datum_reactie'
另外,我必须说:“不要使用msysql_ *,它已被弃用”。
答案 3 :(得分:0)
查询可能由于各种原因而失败 - 语法错误,不存在的表/列,权限不足等。最好的办法是使用mysql_error()/打印错误(在else {}中) mysql_errno()。
答案 4 :(得分:0)
是的......因为所有都是varchar或文本,你必须单引号引用所有值