由于我是初学者,我在从数据库执行数组时遇到了一个问题。
我的代码:
$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_id
和$user_id
但在shop_users_accounting
表中,我有更多的列,如pay_orders
和amount
我尝试过像这样做$operation_query->execute( array($operation_id, $user_id, $pay_orders) );
,但是IF函数被执行了,我得到了false
我试过$operation_query = $db_link->prepare('SELECT * FROM
shop_users_accountingWHERE
id= ? AND
active= 0 AND
user_id= ? AND
pay_orders= ?;');
,结果是一样的,IF函数被执行,我得到了false
问题是,我做错了什么,以及如何从DB中获取pay_orders
和amount
而不获取False
1条答案
按热度按时间xbp102n01#
首先,我将定义添加请求的连接,以从mysql返回错误:
你看到最后一个数组()了吗?它告诉mysql返回错误。然后,我会将所有内容都放在try-catch块中,以便处理错误:
因此,try块将始终被执行。仅当出现错误时,才会执行catch一,并且只会回显错误消息。如果查询失败,您将在catch块中放入您的逻辑,如果查询成功,catch块将在cath块中放入逻辑。
您得到的错误在代码中很模糊,但可能是由于您错误地传递给查询的值(数组元素的值)造成的。用于将数组传递给查询的语法没有严格的错误(您称之为执行数组)。我还建议在查询和bindParams()中使用命名参数,以使代码具有更多的可读性。请参阅here以了解有关如何构建准备好的语句的更多详细信息。