php mysql编写的语句不起作用

时间:2015-07-22 04:27:14

标签: php mysql pdo

这有效

$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);

但我得到一个空白的屏幕 感谢

1 个答案:

答案 0 :(得分:0)

这绝对不会奏效,因为它会将$data作为字符串传递,这意味着您可以有效地获得where session'1' = 'whatever'之类的内容。无论如何,我相当确定你无论如何都不能这样做 - 变量是值,而不是列/表名。

This question非常相似,那里的答案看起来很合适 - 其中一个甚至特别提到了列。