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

时间:2014-12-18 02:46:58

标签: php mysql pdo

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

1 个答案:

答案 0 :(得分:2)

PDO对象的初始化是提供您的数据源名称和用户凭据。

$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');

你不应该在你的陈述准备中使用插值变量。您应该放置一个命名的placeholder:

$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
}