如何从这个准备好的语句中获取循环数组

时间:2013-04-07 17:15:47

标签: php mysqli prepared-statement

我仍在尝试使用预先准备的语句重建应用程序。在下面的例子中,我需要一个循环通过结果的返回数组。我该怎么办?!?

$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();

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:-2)

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

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

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