我仍在尝试使用预先准备的语句重建应用程序。在下面的例子中,我需要一个循环通过结果的返回数组。我该怎么办?!?
$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();
答案 0 :(得分:0)
注意:
所有列必须在
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
}
答案 1 :(得分:-2)
不要使用mysqli重建它。你会浪费生命来对抗它无法使用的界面 使用PDO重建它:
$stm = $pdo->prepare("your query goes here");
$stm->execute(array($querylang, $page));
$data = $stm->fetchAll();
现在你有一个包含所有请求数据的常规数组,你可以按照你想要的方式使用它(假设在模板中循环)