-1

我花了两天时间试图弄清楚为什么这个语句不会将这些数据插入到我的数据库中。也在这里阅读了所有类似的问题,但没有运气。这是声明:

$sql = "INSERT INTO removal_shipment_detail (request_date, order_id, shipment_date, product, product_name, delivered, quantity, local, tracking, update) VALUES ('".$request_date."','".$order_id."','".$shipment_date."','".$product."','".$product_name."','".$delivered."','".$quantity."','".$local."','".$tracking."','".$update."')";

这里的数量是一个 INT。我已经用双引号交换了单引号,并且还结合了添加和删除的串联,但是这些组合都不起作用。

谢谢,请指教!

4

4 回答 4

3

update是 MySQL 的保留字,所以你不能像这样使用这个词作为你的列名。

这是参考:

使用反引号转义列,如下所示:

$sql = "INSERT INTO removal_shipment_detail (`request_date`, `order_id`, `shipment_date`, `product`, `product_name`, `delivered`, `quantity`, `local`, `tracking`, `update`) VALUES ('".$request_date."','".$order_id."','".$shipment_date."','".$product."','".$product_name."','".$delivered."','".$quantity."','".$local."','".$tracking."','".$update."')";

旁注:了解准备好的语句,因为现在您的查询容易受到 SQL 注入的影响。另请参阅如何防止 PHP 中的 SQL 注入

于 2016-11-20T08:20:07.027 回答
0

尝试使用 intval

$sql = "INSERT INTO removal_shipment_detail 
    (request_date, order_id, shipment_date, product, product_name, delivered, quantity, local, tracking, update) 
VALUES
    ('".$request_date."','".$order_id."','".$shipment_date."','".$product."','".$product_name."','".$delivered."',".intval ($quantity).",'".$local."','".$tracking."','".$update."')";
于 2016-11-20T08:32:10.357 回答
0

如果您使用的是 MySQLi,您可以使用以下方法检查您的 SQL 错误:

面向对象风格

if (!$mysqli->query("QUERY_HERE")) {
    printf("Errormessage: %s\n", $mysqli->error);
}

程序风格

if (!mysqli_query($con, "QUERY_HERE")) {
    printf("Errormessage: %s\n", mysqli_error($con));
}

更多信息可以在PHP 中找到:mysqli:$error

我也不喜欢.在没有必要的时候连接字符串(它总是更难阅读)。您的语法可以如下所示:

$sql = "INSERT INTO removal_shipment_detail (`request_date`, `order_id`, `shipment_date`, `product`, `product_name`, `delivered`, `quantity`, `local`, `tracking`, `update`) VALUES ('$request_date','$order_id','$shipment_date','$product','$product_name','$delivered','$quantity','$local','$tracking','$update')";
于 2016-11-20T08:21:46.003 回答
-1

首先,如果数量是一个 INT,那么它不需要用引号括起来。

其次,避免在字段名称中使用保留字,例如“更新”。它可能会混淆数据库引擎。

Rajdeep Paul 的回答也很好,但他没有谈论具有 INT 数据类型的数量字段。

尝试这个

$sql = "INSERT INTO removal_shipment_detail (request_date, order_id, shipment_date, product, product_name, delivered, quantity, local, tracking, update1) VALUES ('".$request_date."','".$order_id."','".$shipment_date."','".$product."','".$product_name."','".$delivered."',".$quantity.",'".$local."','".$tracking."','".$update."')";

请注意,字段名称“update”已更改为“update1”以避免混淆 sql 解释器,并且围绕数量值的引号也已删除。

我希望这有帮助。

于 2016-11-20T08:24:40.367 回答