SELECT查询准备语句输出

时间:2015-09-18 14:48:23

标签: php mysql mysqli prepared-statement

我对准备好的陈述还不熟悉,请原谅我犯下的愚蠢错误。

目前我尝试从数据库外部选择一些东西。虽然没有输出。

$stmt = $mysqli->prepare("SELECT title FROM media");
$stmt->bind_param("s", $title);
$stmt->execute();
$stmt->bind_result($a);
$stmt->fetch();
printf("Title: ", $title, $a);
$stmt->close();

2 个答案:

答案 0 :(得分:2)

将绑定参数添加到您的查询中,如下所示:

$stmt = $mysqli->prepare("SELECT title FROM media WHERE title = ?");
$stmt->bind_param("s", $title);

有关详细信息,请参阅this

答案 1 :(得分:2)

为了能够从预准备语句中输出内容,您必须先从数据库中选择一些内容。

如果您只想选择一个标题,则必须添加WHERE条件

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$stmt = $mysqli->prepare("SELECT title FROM media WHERE title=?");
$stmt->bind_param("s", $title);
$stmt->execute();
$stmt->bind_result($a);
$stmt->fetch();
echo "Title: $title : $a");
$stmt->close();

但你必须意识到条件应该与数据库中存在的实际标题相匹配。否则将不会打印任何内容。

如果要选择所有标题,请删除绑定并添加循环

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$stmt = $mysqli->prepare("SELECT title FROM media");
$stmt->execute();
$stmt->bind_result($a);
while ($stmt->fetch())
{
    echo "Title: $a";
}
$stmt->close();

受欢迎的需求增加了最小的错误处理