php - PDO 从数据库中获取多条记录

标签 php mysql pdo fetch

我正在编写一段非常基本的代码来从 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 的行。

阅读 mysqli with prepared statements 及其工作原理:

检查错误会列出错误。

关于php - PDO 从数据库中获取多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734335/

相关文章:

PHP PDO 返回空列名

php - 必须是数组类型,字符串给定

php - 为什么我在 PHP 中连接到我的数据库时得到 "Access denied for user ' root' @'myhostname"?

python - 没有 SQLAlchemy 或其他 ORM 的 Flask CRUD 编程

mysql - 使用 MySQL 适配器在 LINQ to Entity Framework 中将 String 转换为 Long ...

javascript - Knex 插入后解析空集

PHP 使用 PDO 搜索数据库

javascript - 全屏打开谷歌浏览器

php - 注释路线在 symfony 4.2.8 中不起作用

php - 与简单的 PDO 相比,Doctrine 的数据库抽象层提供了什么?