我觉得我在某个地方犯了一个新手错误,但无法弄清楚出了什么问题。我正在使用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']
)
感谢您的帮助。
绳索
答案 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']);