&引用;执行数组";数据库PHP的问题
因为我是初学者,所以在从数据库执行数组时遇到了问题 我的代码:&引用;执行数组";数据库PHP的问题,php,pdo,Php,Pdo,因为我是初学者,所以在从数据库执行数组时遇到了问题 我的代码: $operation_id = (int)$_GET["operation"]; $operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ?;'); $operation_query->execute(
$operation_id = (int)$_GET["operation"];
$operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ?;');
$operation_query->execute( array($operation_id, $user_id) );
$operation = $operation_query->fetch();
if($operation == false)
{
$answer = array();
$answer["result"] = false;
$answer["code"] = 2;
exit(json_encode($answer));
}
现在,我可以毫无问题地回显$operation\u id
和$user\u id
但是在shop\u users\u accounting
表中,我有更多的列,比如pay\u orders
和amount
我试过这样做$operation\u query->execute(数组($operation\u id,$user\u id,$pay\u orders))但是如果函数被执行,而我得到false
我试过$operation\u query=$db\u link->prepare('SELECT*FROM'shop\u users\u accounting',其中'id`=?和'active`=0,'user\u id`=?和'pay\u orders`=?)如果函数得到执行,而我得到false,那么结果是相同的
问题是,我做错了什么,以及如何从DB获得付款单
和金额
,而不出现错误
我自己决定
谢谢首先,我要定义连接,添加从mysql返回错误的请求:
$pdo = new PDO('mysql:host=127.0.0.1;dbname=mydbname', $db_user, $db_pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
看到最后一个数组()了吗?它告诉mysql返回错误。
然后,我将所有内容都放在try-catch块中,以便处理错误:
try{
$operation_query = $db_link->prepare('SELECT * FROM `shop_users_accounting` WHERE `id` = ? AND `active` = 0 AND `user_id` = ?;');
$operation_query->execute( array($operation_id, $user_id) );
$operation = $operation_query->fetch();
}
catch (PDOException $e) {
echo $e->getMessage();
}
因此,将始终执行try块。只有在出现错误时才会执行catch one,并且只会回显错误消息。如果查询失败,您将在catch块中放入您的逻辑,如果查询成功,则在catch块之后放入您的逻辑
您得到的错误在代码中是模糊的,但可能是由于错误地传递给查询的值(数组元素的值)造成的。将数组传递给查询所使用的语法没有严格的错误(您称之为执行数组)。
我还建议在查询和bindParams()中使用命名参数,使代码具有更多参数,更易于阅读。有关如何生成准备好的报表的更多详细信息,请参阅。是否确定定义了$pay\u orders
?not null?您没有绑定参数,可以使用bind param
进行绑定,因为execute不接受任何参数。看看例子@Ant-its-maybulyPDO
notmysqli
@KsaR,这就是当您没有正确添加标记时会发生的情况。。。