PHP在查询数据库数据时,常取不到数据,也没报错,经过多次查找原因,有个细节常被大意了,就是MySQL查询语句中,有些要加引号,有些不用加引号,多查一查,就能找到原因,如经我自己测试了一下:变量就要加单引号,如果加双引号会报错,
<?php
require "../public/db.php"; //引入数据库文件,文件内容如下
$sql="SELECT * FROM `users` WHERE name = '$a' ";
//查询数据库,*所有内容,user是表名,name是字段名,$a是变量
//取得并处理数据
$stmt=$pdo->prepare($sql);
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
//echo $stmt->rowCount();
if(isset($res)){
foreach($res as $k=>$v){
echo '<br>';
echo 'ID:'.$v['id'];
echo '<br>';
echo '名字:'.$v['name'];
}
}
?>
db.php文件内容如下
<?php
header('content-type:text/html;charset=utf-8');
require "../public/config.php";
try {
$pdo = new PDO(DB_DSN,DB_USER,DB_PWD,
[PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING]);
} catch (Exception $e)
{
echo $e->getMessage();
} catch(Throwable $e)
{
echo $e->getMessage();
}
config.php文件内容如下
<?php
define('DB_HOST','localhost');//主机名
define('DB_USER', 'root');//连接数据库的用户名
define('DB_PWD', 'root');//连接数据库密码
define('DB_NAME', 'test');//数据库名称
define('DB_PORT', '3306');//数据库端口号
define('DB_TYPE', 'mysql');//数据库的型号
define('DB_CHARSET', 'utf8');//数据库的编码方式
define('DB_DSN', DB_TYPE.":host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);//定义PDO的DSN
方法二:
$host = 'localhost';
$username = 'root';
$password = 'root';
$dbname = 'dbname';
// 创建连接
$link = @mysqli_connect($host, $username, $password, $dbname);
if($link){
$sql = 'select * from ‘users’ where name ='$a' '; // SQL 语句 users为表名name字段名$a变量
$result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果
$data = mysqli_fetch_assoc($result); // 从结果集中获取一条数据
mysqli_close($link);
}else{
echo '数据库连接失败!';
}
echo '
';
print_r($data);