1

我觉得我在这里某个地方犯了一个新手错误,但无法弄清楚出了什么问题。我正在使用 PHP 和 mySQL。我有一个数组 $users 存储当前用户的信息。该数组存储客户 ID(cid,它是一个整数)。所以我试图提取仅标记给特定客户的信息。我的代码是:

try
{
    $sql = 'SELECT id, title, image_url FROM shelf WHERE cid = $user['cid']'; 
    $result = $pdo->query($sql);
}

我觉得我的程序的其他部分有类似的代码正在运行,所以这看起来我可能在语法方面做错了。如果我$user['cid']在请求中用 22 之类的硬编码数字替换,则该语句可以正常工作。但是,我需要从 $user 中提取整数。我T_STRING在 SELECT 语句行上遇到错误。我还尝试在周围添加一组额外的单引号,$user['cid']但这也不起作用(即$user['cid']

谢谢你的帮助。

缠绕

4

3 回答 3

3

您正在使用 PDO,因此您也应该使用占位符:

$stmt = $pdo->prepare('SELECT id, title, image_url FROM shelf WHERE cid=:cid');
$stmt->bindParam(':cid', $user['cid']);
$stmt->execute();

This ensures your data is escaped correctly and handles conversion to the appropriate database format where required.

于 2012-09-25T14:22:23.580 回答
2

是的,菜鸟错误。更改为双引号并在值周围添加 { },例如:

$sql = "SELECT id, title, image_url FROM shelf WHERE cid = {$user['cid']}"; 
于 2012-09-25T14:19:34.730 回答
-2

$sql = '从架子 WHERE cid = '.intval($user['cid']) 中选择 id、title、image_url;

于 2012-09-25T14:21:19.913 回答