-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 に答える