Php 非法字符串PDO fetch()与fetchAll()的比较
当我在执行PDO语句后尝试调用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()而导致的,因为这两个函数都没有使用偏移量,
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
循环@你能给我们看看密码吗?