我正在尝试使用 PHP 输出 MySQL 表的所有行,但我只想输出我的code_author
列具有特定值的行。我在网上研究了几个小时,但我只能输出所有行(而不是根据列是否有值进行过滤(。
仅当code_author
列与登录者的作者匹配时,才应输出行,因此变量 $phpro_username
已经拉取了用户名。下面的代码输出以下内容:错误:SQLSTATE[HY093]:参数编号无效:未绑定任何参数。但是,如果我删除WHERE code_author = :$phpro_username
部分,它确实可以完美地输出所有行,但这不是我想要实现的目标。 关于如何解决这个问题的任何想法?
$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$stmt2 = $dbh->prepare("SELECT * FROM qr_codes WHERE code_author = :$phpro_username");
try {
$stmt2 = $dbh->prepare("SELECT * FROM qr_codes");
$stmt2->execute();
$result = $stmt2->fetchAll();
if ( count($result) ) {
foreach($result as $row) {
print_r($row);
}
}
else {
echo "No rows returned.";
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
PDO 对象的初始化是提供数据源名称和用户凭据。
$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
而且,您不应该在语句准备中使用内插变量。您应该放置一个命名的占位符:
$stmt2 = $dbh->prepare("SELECT * FROM qr_codes WHERE code_author = :phpro_username");
$stmt2->bindParam(':phpro_username', $phpro_username);
$stmt2->execute();
然后只需跟进您的获取:
$results = $stmt2->fetchAll(PDO::FETCH_ASSOC);
print_r($results);
foreach($results as $row) {
echo $row['your_column_name'];
// and others
}