PHP - MySQLi INSERT 不起作用


PHP - MySQLi INSERT not working

我必须向MySQL数据库发送一个插入查询,假设所有变量都设置正确,我正在使用以下代码:

 $check_alrd_sent = $mysqli -> query("SELECT * FROM reviews WHERE id_prod =" . $id_prod . " AND id_user = " . $current_usr . " LIMIT 1");
$check = mysqli_fetch_all($check_alrd_sent);
if ($check != NULL) {
    $check_err = 1;
} else {
    $ins_rev = $mysqli -> query("INSERT INTO `reviews` (`ID` ,`ID_prod` ,`ID_user` ,`review` ,`stars`) VALUES (NULL , " . $id_prod .",  " . $current_usr . ", " . $review . ",  " . $rating . ");");
    $ins_result = 1;
}
mysqli_free_result($check_alrd_sent);

$ins_result变量被正确设置为结果,正如我使用 var_dump() 看到的那样,但现在行已插入到数据库中。

奇怪的是,如果我调用MySQL错误日志可以清楚地看到插入被正确发送到数据库,如下所示:

42 Query     INSERT INTO `reviews` (`ID` ,`ID_prod` ,`ID_user` ,`review` ,`stars`) VALUES (NULL , 11,  1, asd,  4)

但它不会出现在表中。

有什么建议吗?谢谢

varchar 字段必须在 2 个配额中,因此review字段必须在 2 个'中:

$ins_rev = $mysqli -> query("INSERT INTO `reviews` (`ID` ,`ID_prod` ,`ID_user`
,`review` ,`stars`) VALUES (NULL , '" . $id_prod ."', ' " . $current_usr . "', '" .
$review . "',  '" . $rating . "');");

您的 INSERT 语句中有两个问题:

    评论
  1. 值列是一个字符串,因此您需要在评论 VALUE 两边使用引号。
  2. 我认为 ID 是一个自动增量而不是空字段。所以不需要在插入查询中使用。

修改后的查询:

INSERT INTO `reviews` 
( `ID_prod`, `ID_user` ,`review` ,`stars`) 
VALUES (11, 1, "asd", 4)

在您的输出中,"asd"不在单引号中。这将是无效的 SQL。还应该考虑转换为未弃用的 SQL 函数,例如 PDO。