T_STRING错误 - 尝试在SQL where语句中使用PHP数组

时间:2012-09-25 14:16:42

标签: php mysql

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

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

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

感谢您的帮助。

绳索

3 个答案:

答案 0 :(得分:3)

你正在使用PDO,所以你也应该使用占位符:

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

这可确保您的数据正确转义,并在需要时处理转换为适当的数据库格式。

答案 1 :(得分:2)

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

$sql = "SELECT id, title, image_url FROM shelf WHERE cid = {$user['cid']}"; 

答案 2 :(得分:-2)

$ sql ='SELECT id,title,image_url FROM shelf WHERE cid ='。intval($ user ['cid']);