如何显示具有特定列值的 MySQL 表中的所有行


How to display all rows in a MySQL table with a specific column value?

我正在尝试使用 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
}