我试图使用PHP输出MySQL表的所有行,但我只想输出code_author列具有特定值的行。我在网上研究了几个小时,但我只能输出所有行(而不是根据列是否有值进行筛选)。
只有当code_author列与登录者的作者匹配时,才应该输出行,因此变量$phpro_username已经提取了用户名。下面的代码输出以下内容: SQLSTATEHY093:无效参数编号:没有绑定参数。但是,如果我删除了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();
}发布于 2014-12-18 02:48:28
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
}https://stackoverflow.com/questions/27538452
复制相似问题