我正在尝试从我的数据库中返回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']}";
}
?>
答案 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。