非法字符串pdo fetch()vs fetchall()

1qczuiv0  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(317)

当我试着打电话的时候 fetch() 执行pdo语句后,我得到以下警告:
警告:字符串偏移非法
当我使用 fetchAll() 不过。
这两者有什么区别,我该怎么用呢?

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

31moq8wy1#

此错误不是由于使用 fetch() 或者 fetchAll() 因为这两个函数都没有使用 offset ,一定是您稍后在代码中所做的某些操作导致了此问题。
我相信你的问题与你在价值观中的循环方式有关,因为你说当你使用 fetchAll() . 循环引发错误是因为它试图访问不存在的偏移量,因为 fetch() 将只返回一个结果,而 fetchAll() 将从查询中返回多个。
至于你的问题“两者有什么区别( fetch() & fetchAll() ),那我怎么用这两个呢?”,这是你的答案。 fetchAll() 用于根据查询返回所有相关行。
这对于需要多行数据的查询非常有用。
pdostatement::fetchall()返回一个包含结果集中所有剩余行的数组。数组将每行表示为列值数组或具有与每个列名对应的属性的对象。如果要获取的结果为零,则返回空数组;如果失败,则返回false。 fetch() 用于从查询返回一行结果。
这对于只需要一行结果的查询非常有用。这在用户登录时非常有用,这样您就不必通过循环数据将其分配给变量。
从与pdostatement对象关联的结果集中获取行。fetch\u style参数确定pdo如何返回行。

相关问题