4

プリペアドステートメントを含むphpコードがあります。javascriptではAjaxを介して呼び出されます。アカウントテーブルにmark(キャップ​​なし)というアカウントがあることは確かですが、$ _ POST ['query']をmに設定してこれを呼び出すと、$ stmt-> num_rows===0がtrueであることがわかります。エラーは見られません、それは単に機能しません!お分かりのように、コンテンツをテーブルにエコーしています。phpMyAdminでこのクエリを試しました:SELECT username FROM account WHERE username LIKE'%m%'そしてそれはうまくいきました。このコードを作成して、mysqlデータベースでユーザー名を検索しました。ご参考までに、$connはインクルードファイルで定義された有効なmysqliオブジェクトです。

<?php
require_once('./include.php');
$stmt=$conn->stmt_init();
$stmt->prepare('SELECT username FROM accounts WHERE username LIKE ?');
$compquery='%'.$_POST['query'].'%';
$stmt->bind_param('s',$compquery);
$stmt->execute();
echo '<tr><td>';
if($stmt->num_rows!==0){
    $stmt->bind_result($name);
    while($stmt->fetch()){
        echo "$name</td></tr><tr><td>";
    }
   echo '</td></tr>';
}
else
    echo 'No Results Found</td></tr>';
4

1 に答える 1

6

コメントからの拡張:

mysql_stmt::store_result()使用する前に使用する必要がありますmysqli_stmt::num_rows

$stmt=$conn->stmt_init();
$stmt->prepare('SELECT username FROM accounts WHERE username LIKE ?');
$compquery='%'.$_POST['query'].'%';
$stmt->bind_param('s',$compquery);
$stmt->execute();
$stmt->store_result();
于 2012-10-18T03:48:02.717 に答える