【发布时间】:2018-03-30 01:06:34
【问题描述】:
$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) 值 ('000060000000000101783710/14/201722:00:00', '00000000033', '000000001017837', '2017-000165903', '1500', '',',', ', '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) 值 ('000060000000000101783710/14/201722:00:00', '00000000033', '00000000171', -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 中,我总是进入 try 部分而不是 catch。
如何检查是否成功插入?
其他信息:
我想检查是否成功,如果失败,我想回滚数据库,我的 var $hpayinsert 设置为 $hpayinsert = true;在插入之前。然后在我检查真假之后,根据该变量的值提交或回滚。
更新:
在输入print_r($hpaystmt->errorInfo()); 后我得到:
Array( [0] => 22001 [1] => 8152 [2] => [Microsoft][ODBC SQL Server Driver][SQL Server]字符串或二进制数据将被截断。(SQLExecute[8152] at ext \pdo_odbc\odbc_stmt.c:254) [3] => 22001)Array( [0] => 22001 [1] => 8152 [2] => [Microsoft][ODBC SQL Server Driver][SQL Server]String 或二进制数据将被截断。(SQLExecute[8152] at ext\pdo_odbc\odbc_stmt.c:254)[3] => 22001)
【问题讨论】:
-
试试 print_r($hpaystmt->errorInfo());
-
我认为您的代码有效。你能做 echo $hpaystmt->execute() === true 吗? “真”:“假”
-
我会更新@IuriiDrozdov
-
你在做
execute两次。你应该只做一次。如果您需要检查结果,则存储结果或内联比较。在这种情况下,您将检查$hpayinsert而不是第二次执行 -
"字符串或二进制数据将被截断。" - 这是你的错误信息。检查您的数据库。确保您的数据库字段足够大以容纳您尝试插入的数据。
标签: php sql-server pdo