我不确定以下代码有什么问题:它不会抛出错误但它也不会返回任何实际数据。
如果它正在运行我想要的查询(SELECT * FROM heroes WHERE year_month = 2
),它应该返回数据。
当我在phpMyAdmin中运行相同的查询时,它会返回一条记录。
因此,合乎逻辑的第一步是验证查询是否正确。是否可以显示正在执行的实际查询,包括变量参数?如果没有,有没有人看到其他明显的问题?
$host = 'localhost';
$db = 'hero_images';
$user = 'sqlmin';
$pass = '***********';
$charset = 'utf8mb4';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, $options);
} catch (PDOException $e) {
echo $e->getMessage()."<br>";
die();
}
$id = 2;
$sql = "SELECT * FROM `heroes` WHERE `year_month`=:year_month";
$stmt = $pdo->prepare($sql);
$stmt->execute(['year_month' => $id]);
$row = $stmt->fetch(PDO::FETCH_NUM);
echo "<br />row['h1_website'] = ".$row['h1_website'];
echo "<br />row['h1_tablet'] = ".$row['h1_tablet'];
echo "<br />row['h1_mobile'] = ".$row['h1_mobile'];
$pdo = null;
提前致谢...
保