0

MySQLiのプリペアドステートメントを使用して、データベースに対して単純なSELECTクエリを作成しようとしています。私は多くのチュートリアルを読み、それらを非常に綿密にフォローしましたが、何らかの理由でまだ機能していません。以下はクエリコードです。

<?php
$user = 'abc';
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
if ($stmt = $dbconn->prepare("SELECT id, pass  FROM my_table WHERE user=?")) {
$stmt->bind_param("s",$user);    
$stmt->execute();
$stmt->bind_result($db_id,$db_pass);
$stmt->fetch();
$stmt->close();
}
$dbconn->close();
echo $db_id . ' ' . $db_pass;
?>

私が実行したとき、これは接続エラーではなくサーバーエラーがあることを示しています。私はかなりの量のPHPの経験がありますが、MySQLiのプリペアドステートメントにはまったく慣れていません。どんな助けでも大歓迎です。お時間をいただきありがとうございます。

4

2 に答える 2

2

かなりの量のPHPの経験がある人にとって、あなたはエラー報告について非常に気が利いています。
エラーメッセージを提供しなかったため、通常のWebサーバーの503応答であると推測できます。
この場合、サーバーのerror_logで実際のエラーメッセージを検索して読み取り、適切なアクションを実行して修正する必要があります。

チェック$dbconn->errorも役立ちます。

エラーを報告する方法は2つあります。

  • それらを画面に表示する(開発ではまともですが、本番環境では受け入れられません)
  • それらをログに書き込む(本番サーバーでは絶対に必要)

この動作の原因となるini設定がいくつかあります。

  • display_errorsエラーを表示するかどうかをPHPに通知します
  • log_errorsエラーをログに記録するかどうかをPHPに通知します。デフォルトでは、Webサーバーのerror_logにログインします
  • error_logPHPエラーを書き込む必要のあるファイル名をphpに通知します

ホスティングツールを使用して適切な設定を行ってください。
そうしないと、とにかくこのホストを使用できなくなります。プログラマーは、エラーメッセージが表示されない場合、作業できません。

エラーメッセージを入手したら、それをグーグル検索フォームに直接転送すると非常に便利です。おそらく誰かがすでに同じものに遭遇し、Stackoverflowでそれを尋ねさえしました

于 2013-01-17T18:03:28.043 に答える
1

私が最初に目にするのは、次の行です。

$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");

する必要があります:

$dbconn = new mysqli("localhost", "my_user", "my_password", "my_db");

それを試して、何が起こるかを見てください。

于 2013-04-04T23:29:23.400 に答える