PDO INSERT INTO [BindingParam 没有错误但没有数据发送到数据库

PDO INSERT INTO [No error in BindingParam but no data is sent to the database

$sqlPickInsert = "INSERT INTO record_pickup(pickup_id, order_code, customer_id,
                                s_date, r_date, payment_amount, payment_mode, 
                                pickup_comments, branch, order_status) 
                               VALUES (?,?,?,?,?,?,?,?,?,?)";

    echo "$sqlPickInsert <br>"; 
    echo "pickupID $nullvalues" ."<br>";
    echo "ordercode $newPickupCode" ."<br>";
    echo "customer ID $finalexistCustID" ."<br>";
    echo "loginDate $login_Date" ."<br>";
    echo "pickup $finalpick_date" ."<br>";
    echo "amount $newExpenditures" ."<br>";
    echo "paymode $paymentMode" ."<br>";
    echo "notes$finalpick_notes" ."<br>";
    echo "login branch$login_Branch" ."<br>";
    echo "status $nullvalues" ."<br>";

    $stmt1 = $conn->prepare($sqlPickInsert);
    if (!$stmt) die ('prepare() failed!');

    $checkID = $stmt1->bindParam(1, $nullvalues,PDO::PARAM_INT); //id
    if (!$checkID) die ('bindParam() ID failed!<br>');

    $checkCODE=$stmt1->bindParam(2, $newPickupCode,PDO::PARAM_STR);//ordercode
    if (!$checkCODE) die ('bindParam() ID failed!<br>');

    $checkCUSTID= $stmt1->bindParam(3, $finalexistCustID,PDO::PARAM_STR);//customerid
    if (!$checkCUSTID) die ('bindParam() ID failed!<br>');

    $checkSDATE=$stmt1->bindParam(4, $login_Date,PDO::PARAM_STR);//s_date
    if (!$checkSDATE) die ('bindParam() ID failed!<br>');

    $checkRDATE=$stmt1->bindParam(5, $finalpick_date,PDO::PARAM_STR);//r_date
    if (!$checkRDATE) die ('bindParam() ID failed!<br>');

    $checkAMOUNT=$stmt1->bindParam(6, $newExpenditures,PDO::PARAM_STR);//amount
    if (!$checkAMOUNT) die ('bindParam() ID failed!<br>');

    $checkPAYMODE=$stmt1->bindParam(7, $paymentMode,PDO::PARAM_STR);//paymode
    if (!$checkPAYMODE) die ('bindParam() ID failed!<br>');

    $checkNOTE=$stmt1->bindParam(8, $finalpick_notes,PDO::PARAM_STR);//note
    if (!$checkNOTE) die ('bindParam() ID failed!<br>');

    $checkBRANCH=$stmt1->bindParam(9, $login_Branch,PDO::PARAM_STR);//branch
    if (!$checkBRANCH) die ('bindParam() ID failed!<br>');

    $checkSTATUS=$stmt1->bindParam(10, $nullvalues,PDO::PARAM_STR);//status
    if (!$checkSTATUS) die ('bindParam() ID failed!<br>');

    $stmt1->execute();

抱歉刚刚学习 PDO,我来这里是为了了解更多关于我在这个特定查询中遇到的关于 INSERT into 的问题。我找不到代码哪里出错了。由于我使用 bindparams INSERT into 的其他查询正在运行。我错过了什么吗?所有变量都显示正确的信息。我不明白为什么这不起作用。

试试这个代码:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt1 = $conn->prepare($sqlPickInsert);

$params = [
  $nullvalues,
  $newPickupCode,
  $finalexistCustID,
  $login_Date,
  $finalpick_date,
  $newExpenditures,
  $paymentMode,
  $finalpick_notes,
  $login_Branch,
  $nullvalues
];

$stmt1->execute($params);

将值数组传递给 execute() 比所有那些 bindParam() 调用更容易。我不知道有那么多 PHP 开发人员认为 bindParam() 是必要的。

启用ERRMODE_EXCEPTION 比在每次调用 PDO 函数后编写检查更容易。这确保如果在准备或执行期间出现任何问题,您将自动收到错误(实际上是异常)。

正如@Barmar 评论的那样,您可能会发现 execute() 上的错误是您似乎将 NULL 传递给 order_status,但该列不接受 NULL。

至少我们猜测 $nullvalues 的值是 NULL,但你没有这么说。