我有以下SQL语句,可以完美运行,并因为我传送一切PDO,我已经有最坏的时候试图转换这个复杂的语句。这是工作如下:转换复杂的SQL语句PDO
$sql_res=mysql_query("SELECT a.first_name, a.last_name, a.uid, a.hometown,
IF(b.friend_two IS NULL, 0, 1) AS isFriend FROM users a LEFT JOIN friends
b ON a.uid = b.friend_two AND b.friend_one = $uid WHERE
CONCAT(a.first_name, ' ', a.last_name) LIKE '%$q%' AND a.uid <> $uid
ORDER BY isFriend DESC");
我一直在尝试了几个小时转换,这是所有我可以从另一个SO范例中得到(它甚至还没有接近的工作)
任何帮助奇妙欣赏。哦,还有$ q是来自用户的POST变量,所以对我来说PDO是必须的。
更新的代码(第二次):
$sql = "select a.first_name, a.last_name, a.uid, a.hometown,
IF(b.friend_two IS NULL, 0, 1) AS isFriend FROM users a LEFT JOIN
friends b ON a.uid = b.friend_two AND b.friend_one = :friend_one
where (first_name like concat('%', :fname, '%') or last_name like
concat('%', :lname, '%')) and a.uid <> :uid ORDER BY isFriend DESC";
$stmt= $db->prepare($sql); $stmt->bindValue(':fname', "%$q%", PDO::PARAM_STR);
$stmt->bindValue(':lname', "%$q%", PDO::PARAM_STR);
$stmt->execute(array(':friend_one' => $uid,':uid' => $uid));
这工作没有任何错误,但不能产生相同的结果与原来的SQL语句。
它是如何 “不工作”? – 2012-07-19 22:28:51
@Marc B:PDO可能会非常棘手的调试,因为你不能总是看到返回的错误 – sdjuan 2012-07-19 22:30:57
PDO错误号和ERRCODE还不够吗?我同意这是困难的,如果这些都没有说什么,但即使没有检查他们只是懒惰... – 2012-07-19 22:31:53