$hpaystmt = $con->_con->prepare(".....");
object(PDOStatement)#7(1){[“queryString”] => string(1515)“INSERT INTO hpay(enccode,orno,hpercode,acctno,amt,curcode,paytype,paycode,entryby,payctr,chrgcode,itemcode,chrgtbl)VALUES('000060000000000101783710/14/201722:00:00',' 00000000033','000000001017837','2017-000165903','1500','PESO','F','C','','1','DR','DR1','MISC')“} ==== object(PDOStatement)#8(1){[“queryString”] => string(1517)“INSERT INTO hpay(enccode,orno,hpercode,acctno,amt,curcode,paytype,paycode,entryby,payctr,chrgcode,itemcode,chrgtbl)VALUES('000060000000000101783710 / 14/201722:00:00',' 00000000033','000000001017837','2017-000165903','100','PESO','F','C','','2','BIRTC','085','MISC')“}
我从
获得上述代码ini_set('display_errors', 1);
var_dump($hpaystmt);
$hpayinsert = $hpaystmt->execute();
echo "==";
echo $hpaystmt->execute() === TRUE ;
echo "==";
我的目的是检查插入是否成功,但echo $hpaystmt->execute() === TRUE ;
这一行总是返回空白,这就是为什么我得到了
回声中}====
;
我没有从显示错误中得到任何错误,我也将它包装在try catch中,并且我总是尝试不捕获。
如何检查此成功插入?
其他信息:
我想检查一下是否成功,如果它失败了我想回滚数据库我的var $ hpayinsert设置为$ hpayinsert = true;在插入之前。然后在我检查true或false之后,根据var的值提交或回滚。
更新:
放下print_r($hpaystmt->errorInfo());
之后:
数组([0] => 22001 [1] => 8152 [2] => [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]字符串或二进制数据将被截断。(SQLExecute [8152 ]在\ text \ pdo_odbc \ odbc_stmt.c:254)[3] => 22001)数组([0] => 22001 [1] => 8152 [2] => [Microsoft] [ODBC SQL Server驱动程序] ] [SQL Server]字符串或二进制数据将被截断。(SQLExecute [8152] at ext \ pdo_odbc \ odbc_stmt.c:254)[3] => 22001)
答案 0 :(得分:4)
在PDO中处理插入操作的结果有三种可能的方案:
try..catch
运算符。对于普通的PHP用户来说,这听起来有些陌生 - 怎么样,不验证操作的直接结果? - 但这就是例外的工作原理 - 您可以在其他地方检查错误。一次就好。非常方便。
因此,在一般情况下,您根本不需要任何处理代码。保持您的代码不变。
我写了一篇关于PHP error reporting basics的文章,详细解释了这个问题,你可能会发现它很有用
仅在您有处理方案的情况下,除了报告错误之外,您可能会收到错误。例如,回滚事务。代码取自我的PDO tutorial:
try {
$pdo->beginTransaction();
$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (?)");
foreach (['Joe','Ben'] as $name)
{
$stmt->execute([$name]);
}
$pdo->commit();
}catch (Exception $e){
$pdo->rollback();
throw $e;
}
答案 1 :(得分:0)
也许试试看
ini_set('display_errors', 1);
var_dump($hpaystmt);
try{
$hpaystmt->execute();
echo "It's a success";
}
catch(Exception $e)
{
echo "Something went wrong";
}