当前位置: 首页 > 面试题库 >

如何在PHP中通过PDO遍历MySQL查询?

上官锦
2023-03-14
问题内容

我正在慢慢地将所有功能LAMP websites从一个mysql_功能移到PDO另一个功能,并且遇到了第一个障碍。我不知道如何通过参数遍历结果。我对以下内容满意:

foreach ($database->query("SELECT * FROM widgets") as $results)
{
   echo $results["widget_name"];
}

但是,如果我想做这样的事情:

foreach ($database->query("SELECT * FROM widgets WHERE something='something else'") as $results)
{
   echo $results["widget_name"];
}

显然,“其他”是动态的。


问题答案:

这是一个使用PDO连接到数据库,告诉它引发Exception(而不是php错误)(将帮助您调试)以及使用参数化语句而不是将动态值替换为查询本身的示例(强烈建议):

// $attrs is optional, this demonstrates using persistent connections,
// the equivalent of mysql_pconnect
$attrs = array(PDO::ATTR_PERSISTENT => true);

// connect to PDO
$pdo = new PDO("mysql:host=localhost;dbname=test", "user", "password", $attrs);

// the following tells PDO we want it to throw Exceptions for every error.
// this is far more useful than the default mode of throwing php errors
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prepare the statement. the place holders allow PDO to handle substituting
// the values, which also prevents SQL injection
$stmt = $pdo->prepare("SELECT * FROM product WHERE productTypeId=:productTypeId AND brand=:brand");

// bind the parameters
$stmt->bindValue(":productTypeId", 6);
$stmt->bindValue(":brand", "Slurm");

// initialise an array for the results 
$products = array();
if ($stmt->execute()) {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $products[] = $row;
    }
}

// set PDO to null in order to close the connection
$pdo = null;


 类似资料:
  • 问题内容: 好的,所以我试图查询数据库并选择所有具有特定值的行。之后,我使用mysql_fetch_array()将查询转换为数组,然后尝试使用for每个循环逐行遍历读取的数组。 尽管当我对pointsAvailable列之外的任何列执行此操作时,说一列名为“ name”的文本类型的列,它只会返回一个字母。 如何逐行遍历返回的查询,并允许从当前行获取特定列的数据? 问题答案: 或使用MYSQL_A

  • 问题内容: 有什么不同的方法可以循环遍历mysql结果集?我是PHP和MySQL的新手,所以我正在寻找简单的循环方法以及有关所提供代码如何工作的解释。 问题答案: 这是一个完整的示例: http://php.net/manual/en/mysqli-result.fetch- array.php 连接 选择数据库 进行查询 循环处理结果并获取数组以获取行

  • 问题内容: 这是我正在使用的代码: 在我的视图中,这是我要查看的值: 想象一下,我查询类似的东西,并且返回一个结果集,例如: 如何遍历每个值并输出呢? 这里的文档没有用,因为我尝试了应该存在的方法,但是解释器给我一个错误,指出这些方法不存在。我使用了错误的文档吗? http://www.tmtm.org/en/mysql/ruby/ 谢谢! 问题答案: 如果您使用的是mysql2 gem,那么您应

  • 每次我们在堆中为链表分配内存时,我们都会得到一个地址,这个地址链接到链表的下一个变量,head是指向链表初始节点的指针。 如果我们做,那么它会指向下一个链表,或者指向堆的随机内存,或者指向堆中初学者列表的下一个内存。

  • 问题内容: 我无法从fetchAll获取数据以选择性打印。 在普通的mysql中,我这样做: 在PDO中,我遇到了麻烦。我绑定了参数,然后将获取的数据保存到上述的$ rs中,目的是以相同的方式循环遍历它。 现在出现了麻烦部分。我如何在PDO上做些什么来获得与上述while循环匹配的东西?我知道我可以使用print_r()或dump_var,但这不是我想要的。我需要做以前可以使用普通mysql进行的

  • 本文向大家介绍如何遍历PHP中的DOM元素?,包括了如何遍历PHP中的DOM元素?的使用技巧和注意事项,需要的朋友参考一下 以下是XML数据(输入)- 遍历DOM对象中的元素。 示例 输出结果 这将产生以下输出- 通过在XML文件中的所有节点上运行foreach循环,可以获取XML文件中的元素。在foreach循环内,将引用主节点的子节点,并且可以访问该子节点的子值。