我正在编写一段非常基本的代码来从 mysql 数据库中获取一行或(在大多数情况下)多行。
function getschema($mysqli){
$id = $_SESSION['user_id'];
$query = $mysqli->prepare("SELECT a.naam
FROM schemes AS a, aankoop AS b
WHERE b.aankoop_username_id = :userid && b.aankoop_schema_id = a.id");
$query->bind_param(':userid', $id, PDO::PARAM_INT);
$query->execute();
$result = $query->fetchAll();
echo ($result);
}
我从 session 中获取用户 ID,并使用准备好的语句中的查询提取数据。 这个说法是正确的。我在 phpmyadmin 中试过了,它返回了正确的值。
现在我想像这样在我的 HTML 中使用这个函数......
<?php echo getschema($mysqli); ?>
但是我的代码没有返回任何东西,它甚至弄乱了我要显示代码的 html 页面的布局。
我认为这可能与 fetchAll 命令有关。我还尝试了 PDO::Fetch_ASSOC
但它也不起作用。
此外,我看不到 php 错误,即使在 php.ini 文件中启用了它们也是如此。
最佳答案
这是正在发生的事情;您正在混合使用 MySQL API/函数,而那些不会混合使用。
将 b.aankoop_username_id = :userid
中的 :userid
(PDO) 绑定(bind)替换为 ?
占位符
b.aankoop_username_id = ?
然后这一行:
$query->bind_param(':userid', $id, PDO::PARAM_INT);
将 :userid
替换为 $id
并删除 , PDO::PARAM_INT
但添加 i
$query->bind_param("i", $id);
旁注:确保该列是 int
类型。如果不是,请使用 s
而不是 i
。
用 AbraCadaver 的回答中概述的循环替换 fetchAll
的行。
- 您不能混合使用 MySQL API/函数,请阅读 Stack 上的以下内容:
- Can I mix MySQL APIs in PHP?
阅读 mysqli with prepared statements 及其工作原理:
检查错误会列出错误。
关于php - PDO 从数据库中获取多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734335/