PDO和查询疑难解答-基本

时间:2019-02-17 22:02:40

标签: php pdo

我正在将旧的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查询时,它确实为我提供了具有相同电子邮件的记录。

1 个答案:

答案 0 :(得分:0)

尝试以下操作,并使用准备好的语句,例如防止SQL注入。

$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();