SQL 中 where 子句的两个条件
two condition for where Clause in SQL
我想用我的 php 代码执行 sql 查询,但这是错误的,我不知道我的问题是什么!
$end_type = $executed[end_type];
$start_type = $executed[start_type];
$sql = "SELECT * FROM `wants` WHERE ((`car`=? AND $start_type=? AND $end_type=?) OR (`car`=? AND $start_type=? AND $end_type='all'))";
$query = $con->prepare($sql);
$query->bindValue(1, $executed[car]);
$query->bindValue(2, $executed[start_place]);
$query->bindValue(3, $executed[end_place]);
$query->execute();
$results = $query->fetchall();
sendmsg($user_id, $results);
sendmsg
是我的消息发送函数,它不 return 任何数组,甚至是空数组!
为什么?我的解决方案是什么?
这里的主要问题似乎是您在准备好的语句中有五个 ?
占位符,但仅绑定 三个 值。可能有一些方法可以回收 PHP 中的绑定值,但在这种情况下,我会将您的查询改写为:
SELECT *
FROM wants
WHERE car = ? AND start_type = ? AND end_type IN (?, 'all');
已更新 PHP 代码:
$sql = "SELECT * FROM wants WHERE car = ? AND start_type = ? AND end_type IN (?, 'all')";
$query = $con->prepare($sql);
$query->bindValue(1, $executed[car]);
$query->bindValue(2, $executed[start_place]);
$query->bindValue(3, $executed[end_place]);
$query->execute();
$results = $query->fetchall();
我想用我的 php 代码执行 sql 查询,但这是错误的,我不知道我的问题是什么!
$end_type = $executed[end_type];
$start_type = $executed[start_type];
$sql = "SELECT * FROM `wants` WHERE ((`car`=? AND $start_type=? AND $end_type=?) OR (`car`=? AND $start_type=? AND $end_type='all'))";
$query = $con->prepare($sql);
$query->bindValue(1, $executed[car]);
$query->bindValue(2, $executed[start_place]);
$query->bindValue(3, $executed[end_place]);
$query->execute();
$results = $query->fetchall();
sendmsg($user_id, $results);
sendmsg
是我的消息发送函数,它不 return 任何数组,甚至是空数组!
为什么?我的解决方案是什么?
这里的主要问题似乎是您在准备好的语句中有五个 ?
占位符,但仅绑定 三个 值。可能有一些方法可以回收 PHP 中的绑定值,但在这种情况下,我会将您的查询改写为:
SELECT *
FROM wants
WHERE car = ? AND start_type = ? AND end_type IN (?, 'all');
已更新 PHP 代码:
$sql = "SELECT * FROM wants WHERE car = ? AND start_type = ? AND end_type IN (?, 'all')";
$query = $con->prepare($sql);
$query->bindValue(1, $executed[car]);
$query->bindValue(2, $executed[start_place]);
$query->bindValue(3, $executed[end_place]);
$query->execute();
$results = $query->fetchall();