Php 为什么PDO语句在单次获取时返回false?

Php 为什么PDO语句在单次获取时返回false?,php,mysql,pdo,mariadb,Php,Mysql,Pdo,Mariadb,我不知道为什么当我试图通过获取一行来执行SELECT查询时,PHP总是返回false 我的桌子是: create table profile ( id int not null auto_increment, email char(50) not null, password char(100) not null, name char(100) not null, surname char(50) not null, street char(50)

我不知道为什么当我试图通过获取一行来执行SELECT查询时,PHP总是返回false

我的桌子是:

create table profile
(
    id int not null auto_increment,
    email char(50) not null,
    password char(100) not null,
    name char(100) not null,
    surname char(50) not null,
    street char(50) not null,
    homeno char(5) not null,
    postalcode char(5),
    homearea char(100) not null,
    group_id int not null,
    primary key(id)
);
create table usergroups
(
    id int auto_increment not null,
    name char(30) not null,
    primary key(id)
);
我在其中获得了一些数据集,然后我尝试使用(用于获取一个用户配置文件;简化示例)读取它们:

$sSQL=execute();
$result=$stmt->fetch();
var_dump($结果);
我的数据库是MariaDB


同样的查询以前也可以工作,但没有问号,所以以前没有什么可绑定的。我猜数据库和/或PHP有一个错误。

编程不像小说。每一个前提都必须得到验证

$pdo = new PDO($sDsn, $sUser, $sPass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sSQL = SELECT p.* FROM profile inner join usergroups u on group_id = u.id 
        WHERE email = 'some@example.com';
$user = $pdo->query($sSQL)->fetch();
var_dump($user);

$sSQL = SELECT p.* FROM profile inner join usergroups u on group_id = u.id 
        WHERE email = ?;
$stmt = $pdo->prepare($sSQL);
$stmt->execute(['some@example.com']);
$user = $stmt->fetch();
var_dump($user);

运行此代码并将结果粘贴到此处。或者只是考虑一下自己

你是否试过回响了<代码> $sSQL \代码>的值?然后,您可以直接在phpMyAdmin或类似文件中运行该命令,以确认查询本身是有效的。是。正如我在上面所写的,查询工作时没有问号,所以我的意思是使用固定字符串e。G像``profile
电子邮件`='some@example.com”“好的,谢谢。在我较大的类中,我常常获取一个不存在的列。我刚把它取下来,一切正常。谢谢你的帮助。在将来,我将始终打开PDO的异常抛出。
$pdo = new PDO($sDsn, $sUser, $sPass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sSQL = SELECT p.* FROM profile inner join usergroups u on group_id = u.id 
        WHERE email = 'some@example.com';
$user = $pdo->query($sSQL)->fetch();
var_dump($user);

$sSQL = SELECT p.* FROM profile inner join usergroups u on group_id = u.id 
        WHERE email = ?;
$stmt = $pdo->prepare($sSQL);
$stmt->execute(['some@example.com']);
$user = $stmt->fetch();
var_dump($user);