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
,但你没有这么说。
$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
,但你没有这么说。