MySQL Query不根据WHERE值选择数据

时间:2011-07-03 20:40:13

标签: php mysql sql

我正在尝试从我的数据库中返回userID等于登录用户的所有记录。

我有以下因为某些原因它没有返回任何东西,任何人都可以看到任何明显的错误吗?

<?php 
$interestsquery  = "SELECT * 
                      FROM user_interests 
                     WHERE user_id = $usersClass->userID()";
$result = mysql_query($interestsquery);

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "{$row['interest']}";
} 
?>

4 个答案:

答案 0 :(得分:5)

不幸的是,你无法调用函数并以这种方式解析它们。您需要手动连接,或者设置变量并解析它。

试试这个:

"SELECT * FROM user_interests WHERE user_id = " . $usersClass->userID();

或者这个:

$uid = $usersClass->userID();
"SELECT * FROM user_interests WHERE user_id = $uid";

答案 1 :(得分:4)

方法调用是一个足够复杂的表达式,您应该将它包含在表达式插值分隔符中:

$interestsquery  = "SELECT * FROM user_interests WHERE user_id = {$usersClass->userID()}"

但我还建议放弃原始的PHP / mysql扩展并转移到PDO,这样就可以使用查询参数了。然后,您根本不必麻烦使用字符串插值,并且您可以更好地编写能够抵御SQL注入漏洞的代码。

$interestsquery  = "SELECT * FROM user_interests WHERE user_id = ?"
$stmt = $pdo->prepare($interestsquery);
$result = $stmt->execute(array( $usersClass->userID() ));

答案 2 :(得分:2)

试试这个:

$interestsquery  = "SELECT * FROM user_interests WHERE user_id =".$usersClass->userID();

答案 3 :(得分:2)

尝试

$interestsquery  = "SELECT * FROM user_interests 
                    WHERE user_id = ".$usersClass->userID();

并确保$usersClass->userID()返回有效的整数用户ID。