【发布时间】:2015-10-11 18:44:59
【问题描述】:
这行得通
$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);
但我只是得到一个空白屏幕 谢谢
【问题讨论】:
-
php.net/manual/en/pdo.error-handling.php 这会告诉你为什么它失败了。
-
准备好的语句不是字符串连接的某种奇特形式。还有很多事情要做,因此您不能在准备好的语句中使用占位符来表示表名或列名。无论如何,如果您有名为
session1、session2等的列,那么您的数据库设计就有缺陷。 -
“但我只是得到一个空白屏幕” => php.net/manual/en/function.error-reporting.php