Php 非法字符串PDO fetch()与fetchAll()的比较

Php 非法字符串PDO fetch()与fetchAll()的比较,php,mysql,database,pdo,Php,Mysql,Database,Pdo,当我在执行PDO语句后尝试调用fetch()时,会收到以下警告: 警告:字符串偏移量非法 但是,当我使用fetchAll()时,它工作得非常好 这两者有什么区别,我将如何使用其中一个 $allData = $con->prepare("SELECT * FROM users"); $allData->execute(); $result = $allData->fetch(); 此错误不是由于使用了fetch()或fetchAll()而导致的,因为这两个函数都没有使用偏移量,

当我在执行PDO语句后尝试调用
fetch()
时,会收到以下警告:

警告:字符串偏移量非法

但是,当我使用
fetchAll()
时,它工作得非常好

这两者有什么区别,我将如何使用其中一个

$allData = $con->prepare("SELECT * FROM users");
$allData->execute();
$result = $allData->fetch();

此错误不是由于使用了
fetch()
fetchAll()
而导致的,因为这两个函数都没有使用
偏移量,因此您以后在代码中执行的操作一定会导致此问题

我相信您的问题与您在使用
fetchAll()
时循环使用值的方式有关。您的循环正在抛出错误,因为它正在尝试访问不存在的偏移量,因为
fetch()
将只返回一个结果,而
fetchAll()
将从您的查询返回多个结果


至于你的问题“这两个(
fetch()
&
fetchAll()
)之间有什么区别,以及我将如何使用其中一个?”这是你的答案

用于根据查询返回所有相关行

这对于需要多行数据的查询非常有用

PDOStatement::fetchAll()返回包含所有 结果集中的剩余行。数组将每行表示为 列值数组或具有属性的对象 对应于每个列名称。如果存在,则返回空数组 要获取的结果为零,或者失败时为FALSE


用于从查询返回一行结果

这对于只需要一行结果的查询非常有用。这在用户登录时非常有用,这样您就不必通过循环数据将其分配给变量

从与PDOStatement对象关联的结果集中获取行。 fetch_样式参数确定PDO返回行的方式


我认为(这里猜测)fetch需要一条记录,fetchall接受多条记录records@hellyale这是正确的
fetch()
用于返回一行结果,
fetchAll()
返回多行结果。您实际上还没有显示会引发该警告的代码部分。这些代码都没有引用偏移量,因此警告会在稍后出现,当您使用
$result
@Don'tPanic Yes执行某些操作时,当我但它处于循环中时,什么类型的循环?它是
for
循环还是
foreach
循环@你能给我们看看密码吗?