在执行PDO语句后尝试调用fetch()时,会收到以下警告:
警告:非法字符串偏移量
不过,当我使用fetchAll()时,它工作得很好。
这两者有什么区别,我如何使用其中之一?
$allData = $con->prepare("SELECT * FROM users");
$allData->execute();
$result = $allData->fetch();发布于 2018-01-12 21:26:52
此错误并不是由于使用了fetch()或fetchAll(),因为这两个函数都没有使用offset,您以后在代码中做的一定会导致这个问题。
我相信你的问题与你在价值观中循环的方式有关,因为你说当你使用fetchAll()时它是有效的。您的循环正在抛出一个错误,因为它试图访问一个不存在的偏移量,因为fetch()只返回一个结果,而fetchAll()将从您的查询中返回多个结果。
至于你的问题“两者之间的区别是什么(fetch() & fetchAll()),我将如何使用两者之一?”,这是您的答案。
根据查询,fetchAll()用于返回所有相关行。
这对于需要很多行数据的查询是有益的。
PDOStatement::set ()返回一个数组,该数组包含结果集中的所有剩余行。该数组将每一行表示为列值数组或具有与每个列名对应的属性的对象。如果要获取的结果为零,则返回一个空数组,如果失败,则返回FALSE。
fetch()用于从查询中返回一行结果。
这对于只需要一个行结果的查询是有益的。这对于用户登录时非常有用,这样您就不必循环数据来将其分配给变量。
从与PDOStatement对象关联的结果集中获取一行。fetch_style参数确定PDO返回行的方式。
https://stackoverflow.com/questions/48234062
复制相似问题