3

私はいつもPDOステートメントを使用していましたが、何らかの理由でサーバーの人にphp用のPDOをインストールするように説得することはできませんが、MySQLiを持っています、何が間違っているのかわかりません、接続エラーは発生しませんどのように出力しようとしても、クエリエラーは発生しません。これが私がしていることです。

include 'MySQLiConnect.php';

if($stmt = $mysqli->prepare("SELECT * FROM zipCodeTable WHERE zip_code = ?")){

    $stmt->bind_param("s", '07110');

    $stmt->execute();

    $stmt->bind_result($resultsArray);

    $stmt->fetch();

    foreach($resultsArray as $columnData){

        $matchingZipcode = $columnData['zip_code'];
        $matchingTimezone = $columnData['time_zone'];
    }       

    $stmt->close();


}

echo $matchingZipcode.', '.$matchingTimezone;

これは基本的にユーザーの郵便番号を確認するためのものであり、これまでMySQLiのプリペアドステートメントを使用したことはありません。マニュアルから直接実行しようとしましたが、何が間違っているのかわかりません。お時間を割いていただきありがとうございます。

4

1 に答える 1

3

リテラル文字列を「バインド」しようとしています。あなたはこれを行うことはできません。変数をバインドする必要があります。

変化する

$stmt->bind_param("s", '07110');

$string = '07110';

$stmt->bind_param("s", $string);

また、結果をバインドするときは、返されるフィールドごとに変数を指定する必要があります。

例えば:

$stmt->bind_result($zipCode, $timeZone);

を使用する場合、これは少し問題がありSELECT *ます。あなたはそれについてどのようにやりたいかについてこのコメントをチェックすることに興味があるかもしれません:http ://www.php.net/manual/en/mysqli-stmt.bind-result.php#85470

于 2013-02-09T19:29:30.680 に答える