我正在将旧的PHP 5.6代码转换为7.2并学习如何使用PDO。我已经陷入了困境,想要向社区学习。
我创建了一个测试文件结构:
db.php中:
<?php
try {
$conn = new PDO($initlocation, $username, $pwdata);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "worked"; // THIS WORKS ON THE SCREEN
}
catch(PDOException $e){
echo "Connection failed: " . $e->getMessage();
}
?>
test.php的:
<?php
include("db.php");
$user_query='SELECT * FROM `users` WHERE `email`="[email protected]"';
echo $user_query; // I GET THE QUERY PRINTED ON THE SCREEN
echo is_object($conn); // THIS IS 1 WHICH IS GOD
echo "<br>";
echo is_object($res); // THIS IS 1 WHICH IS ODD
try{
$res = $conn->query($user_query);
}
catch (Exception $e){
echo "Query failed: " . $e->getMessage(); // NOTHING
}
echo "<br>";
echo is_object($res); // NOTHING
$data_exists = $res->fetch();
if ($data_exists==1) echo "yes"; // NOTHING
?>
我已经在代码中留下了测试方法,我很想找到一个更好的解决方案来找出查询没有显示任何内容的原因。
目的是找到数据库中的电子邮件地址,并给我一些反馈。提前感谢所有我只会从中学到的评论。
附加信息:当我直接在DB中运行SQL查询时,它确实给了我具有相同电子邮件的记录。
请尝试以下操作并使用准备好的语句,例如防止SQL注入。
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();