Mysqli - 使用select case但其他数据没有绑定

时间:2012-06-16 19:03:14

标签: php sql oop mysqli

我正在使用Mysqli OO使用MySQL语句CASE在数据库中搜索2个特定值。如果找到两个值,那么它将返回值'true',如果只找到一个值为'false',如果两个都没有找到,那么结果都不是。无论如何我有这个工作,但我的问题是我需要它也显示列中相关的值。

$query = "SELECT 'userName','email','code',
CASE 
    WHEN (email=? AND code=?) THEN 'true'
    WHEN (email=?) THEN 'false'
    ELSE  'NONE'
END AS answer
FROM users WHERE email=?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("ssss", $email,$code, $email,$email);
$email = $mysqli->real_escape_string($email);
$code = $mysqli->real_escape_string($code);
$stmt->execute();
$stmt->bind_result($user,$email,$code,$answer);
$stmt->fetch();
print_r($stmt->fetch);
$stmt->store_result();
echo "User: ".$user." Email: ".$email." Code: ".$code." Answer: ".$answer;

好的,所以当我运行代码时,它应显示为:

User: ryan Email: local@localhost Code: 12 Answer: true

但它显示为:

User: userName Email: email Code: code Answer: true

所以我认为错误更多的是与它的SQL方面有关,但我被困住了,希望得到一些帮助。感谢

1 个答案:

答案 0 :(得分:3)

您正在选择字符串文字,例如'userName',而不是列中包含的值。

要解决此问题,请删除列名称旁边的引号:

SELECT userName,email,code,...

或者使用反引号(允许,但只有在列名为reserved word时才需要):

SELECT `userName`,`email`,`code`,...