php - 如何使用创建的数据库类从 MySQL 数据库中查询数据
问题描述
我很难选择数据,甚至在使用类时将数据放入我的数据库中。这里有两个例子,一个有效(没有类),另一个没有(有类)。
让我们从有效的开始。在文件名index1.php
中,我们有这些代码行。
$con = new PDO("mysql:host=localhost;dbname=database","user","pass");
echo "Connection success ";
$sql = "SELECT email FROM users WHERE email=:email";
$email= "mail@gmail.com";
$stmt = $con->prepare($sql);
//var_dump($stmt);
$stmt->bindParam(":email", $email, PDO::PARAM_STR);
$stmt->execute();
$count = $stmt->rowCount();
echo $count;
这将返回 $count = 2,这是真的。我在数据库中有 2 个用户mail@gmail.com
作为电子邮件。
现在到了不起作用的情况。这是文件Database.php
<?php
class Database{
protected $pdo;
protected static $instance;
protected function __construct(){
$this->pdo = new PDO("mysql:host".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
echo "success";
}
public static function instance(){
if(self::$instance===null){
self::$instance = new self;
}
return self::$instance;
}
public function __call($method, $args){
return call_user_func_array(array($this->pdo, $method), $args);
}
}
?>
我在文件中使用它index2.php
define("DB_HOST", "localhost");
define("DB_USER", "user");
define("DB_PASS", "pass");
define("DB_NAME", "database");
include_once "Database.php";
$pdo = Database::instance();
$sql = "SELECT email FROM users WHERE email=:email";
$email = "mail@gmail.com";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":email", $email, PDO::PARAM_STR);
$stmt->execute();
$count = $stmt->rowCount();
echo $count;
这个 $count 返回0
。而且我没有收到任何错误。我使用var_dump() and $stmt->debugDumpParams()
但找不到问题所在)。难道我做错了什么 ?
解决方案
推荐阅读
- c# - 将 json 反序列化为具有泛型类型的基础对象
- bash - 运行程序避免覆盖输出
- python - 如何将for循环输出转换为python列表
- javascript - 在模态框上显示模态框,但第二个模态框正在关闭。离子 3
- reactjs - 根据呈现的内容更新导航面板样式
- android - Android:两部手机都在录制音频时,Skype 通话无法正常工作
- android - 登录用户的iandroid webview缓存问题
- perforce - Perforce,可以搁置提交的更改吗?
- linux - 如何将用户名附加到文件名中
- python - Ubuntu + Python:wlan0 上的 HTTP 客户端和 eth0 上的 TCP 服务器