这有效
$stmt = $conn->prepare("select username from usernames where session" . "1" . " = :session");
$stmt->bindParam(':session', $session);
$stmt->execute();
但这不起作用
$data = "1";
$stmt = $conn->prepare("select username from usernames where session" . ":data" . " = :session");
$stmt->bindParam(':data', $data);
$stmt->bindParam(':session', $session);
$stmt->execute();
我一直试图找出原因。可以请一些帮忙。
我唯一能想到的是我的数据库将session1作为一个字段,但它也有session2,所以也许我不能使用参数来分割字段名称?
我一直在使用
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
但我得到一个空白的屏幕 感谢
答案 0 :(得分:0)
这绝对不会奏效,因为它会将$data
作为字符串传递,这意味着您可以有效地获得where session'1' = 'whatever'
之类的内容。无论如何,我相当确定你无论如何都不能这样做 - 变量是值,而不是列/表名。
This question非常相似,那里的答案看起来很合适 - 其中一个甚至特别提到了列。