【发布时间】:2018-11-23 08:11:54
【问题描述】:
我想使用 PHP mysqli 从我的表中获取一行。 它使用准备好的语句,但我不能这样做,我的代码什么也没显示。我该怎么办?
<?php
require_once 'inc/db.inc.php';
$post_id = $_GET['id'];
$q = "SELECT post_id, post_name, post_title, post_content, post_author, post_short_des, post_tag, post_date FROM posts WHERE post_id=? LIMIT 1";
$stmt = $conn->prepare($q);
$stmt->bind_param('i', $post_id);
$stmt->execute();
$stmt->bind_result($post_id, $post_name, $post_title, $post_content, $post_author, $post_short_des, $post_tag, $post_date);
$stmt->fetch();
print_r($stmt);
【问题讨论】:
-
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")程序接口是 PHP 4 时代引入的mysqliAPI 的产物,不应在新代码中使用。 -
是的,但我是 php 新手,我没有编程经验。所以我害怕 OOP(!),我就是不明白!
-
关于“OOP”的五秒速成课程:
f($x, $y)程序风格变为面向对象形式的$x->f(y),第一个参数是对象以及如何调用函数。 OO 的主要推动力是您拥有对“对象”而不是任意参数进行操作的函数。将对象视为相关变量和函数的容器,您可以像传递简单变量一样在我们周围传递。 -
值得注意的是,PDO 在界面方面要干净得多,所以如果您到目前为止还不太热衷于
mysqli,那么值得一试。命名占位符功能很重要,而且您可以将关联数组传递给execute(),这使代码变得不那么繁琐。更好的是像 Doctrine、Propel、RedBeanPHP 或 Eloquent 这样的 ORM,它们不仅仅运行查询。 -
您的数据库中有多少列?您需要绑定并获取它们