INSERT INTO数据库无法正常工作

时间:2016-03-17 20:57:17

标签: php mysql

我试图将数据输入数据库(它是一个反应脚本),但我总是收到错误,这让我发疯了。

这是我正在使用的代码:

    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;
    }

这就是我得到的: enter image description here

所以一切似乎都正确?

这就是我的数据库的样子: enter image description here

5 个答案:

答案 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或文本,你必须单引号引用所有值