我正在将旧的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`="user1.a@gmail.com"';
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
?>
我也将测试方法留在了代码中,并且我渴望找到一个更好的解决方案,以查明查询为何不显示任何内容。
目的是在数据库中找到电子邮件地址,并给我一些反馈。预先感谢您所有的评论,我只会从中学习。
其他信息: 当我直接在数据库中运行SQL查询时,它确实为我提供了具有相同电子邮件的记录。
答案 0 :(得分:0)
尝试以下操作,并使用准备好的语句,例如防止SQL注入。
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();