Php 如何使用pdo连接到mysql

Php 如何使用pdo连接到mysql,php,mysql,pdo,Php,Mysql,Pdo,我正在使用php,因为我想使用PDO连接到mysql数据库。我已经在配置文件中存储了用户名、密码和数据库,但是我在连接mysql数据库时遇到了问题,因为我一直收到一个错误 当我尝试这个: <?php //Connect to the database include('config.php'); $smtps = $link->query('SELECT * FROM sent'); $smtps->execute(); $db = $smtps->get_resul

我正在使用php,因为我想使用PDO连接到mysql数据库。我已经在配置文件中存储了用户名、密码和数据库,但是我在连接mysql数据库时遇到了问题,因为我一直收到一个错误

当我尝试这个:

<?php

//Connect to the database
include('config.php');

$smtps = $link->query('SELECT * FROM sent');
$smtps->execute();
$db = $smtps->get_result();

print($db);
?>
以下是配置:

<?php
/* Database credentials. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
define('DB_HOST', 'localhost');
define('DB_USER', 'username');
define('DB_PASS', 'password');
define('DB_NAME', 'dbtablename');
//$errflag = false;
$link = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.'', DB_USER, DB_PASS);

?>
你能给我举个例子吗?当你在config.php中存储用户名、密码和数据库名时,你是如何使用PDO连接到mysql数据库的

谢谢。

之所以发生这种情况,是因为get_result不是PDO方法

在这种情况下,若只需要第一个结果,就应该使用fetch;若需要一个结果数组,就应该使用fetchAll

试试这个:

$smtps = $link->query('SELECT * FROM sent');
$result = $smtps->fetchAll();

print($result);
在选择中使用参数时,只需使用excute:

SELECT * FROM sent where id = ?
会是

$smtps = $link->prepare('SELECT * FROM sent where id = ?');
$smtps->execute([$id]);
$result = $smtps->fetch();

print($result);

如果您使用查询方法,则无需执行方法即可得到如下结果:

include('config.php');

$result = $link->query('SELECT * FROM sent')->fetchAll(PDO::FETCH_ASSOC);


print_r($result);
get_results不是该类的方法。在这种情况下,如果要从数据库中获取数据,请使用查询对象的fetchAll方法


希望这能有所帮助。

可能是因为get_result不是一个?YvesLeBorg:也许你是对的,那么我如何使用PDO方法获得结果呢?唯一有效的方法是如果我使用这个$smtps=mysqli_query$链接,选择*FROM sent$服务器=$smtps->获取所有mysqli\u ASSOC;。但是我觉得mysqli方法不安全?我认为$link->query和一个参数应该是$link->prepare。@Oli Girling非常感谢。我不知道get_结果不是pdo方法。因此,当我想使用变量$MessageId时,我如何使用它来使用pdo查找我想要的数据?@Oli Girling示例:$emailTrackers_sql=$link->query'SELECT*FROM sent WHERE email_id=?'$emailTrackers_sql->bind_param's',$messageID$emailTrackers\u sql->执行;bind_param也不是PDO方法。替换此->$emailTrackers\u sql->bind\u param',$messageID;有了这个->$emailTrackers\u sql->bindParam1,$messageID,PDO::PARAM\u STR@谢谢你。最后我让它工作了,谢谢你的帮助。
include('config.php');

$result = $link->query('SELECT * FROM sent')->fetchAll(PDO::FETCH_ASSOC);


print_r($result);