-1

我仍在尝试使用准备好的语句重建应用程序。在以下情况下,我需要一个循环遍历结果的返回数组。我该怎么做?!?

$page       =   'home';

require($reqcon);

$stmt = $connect->prepare("
SELECT page.alias, page.id, pagel10n.text AS sitetitle, pagel10n.languageCode AS langCode, IF ( lang.translationID IS NULL, lang.`Name`, langl10n.text ) AS langName FROM pages AS page LEFT JOIN `l10n-strings` AS pagel10n ON ( page.translationID = pagel10n.translationID ) LEFT JOIN languages AS lang ON ( pagel10n.languageCode = lang.ID ) LEFT JOIN `l10n-strings` AS langl10n ON ( lang.translationID = langl10n.translationID AND langl10n.languageCode = ? ) WHERE page.`status` = '1' AND page.alias = ?");

$stmt->bind_param('ss', $querylang, $page);
$stmt->bind_result($id, $alias, $sitetitle, $langCode, $langName);
$stmt->execute();
$stmt->store_result();
4

2 回答 2

0

来自关于bind_result的 MySQLi 文档

笔记:

所有列必须在mysqli_stmt_execute()调用之后和之前绑定mysqli_stmt_fetch()。根据列类型,绑定变量可以静默更改为相应的 PHP 类型。

因此,您的代码应该是:

$stmt->bind_param('ss', $querylang, $page);
$stmt->execute();
$stmt->bind_result($id, $alias, $sitetitle, $langCode, $langName);
while( $stmt->fetch() ) {
    // your job
}
于 2013-04-07T17:24:42.873 回答
-2

不要使用 mysqli 重建它。你会浪费你的生命来对抗它无法使用的界面。使用PDO
重建它:

$stm = $pdo->prepare("your query goes here");
$stm->execute(array($querylang, $page));
$data = $stm->fetchAll();

现在你有一个包含所有请求数据的常规数组,你可以使用任何你想要的方式(假设在模板中循环)

于 2013-04-07T17:20:23.543 回答