2016-08-17 16 views
0

ローカルホストのMySQLデータベースからいくつかのデータを返そうとしています。例1 on this pageです。準備ができていない簡単なステートメントが動作しない

データベースとテーブルの両方が存在し、PhpMyAdminを使用してクエリを実行すると、5つの結果が正常に返されます。

マイページはtest.phpを、私はページを訪問するたびに、私が見ることができるすべての単語「を接続」で呼ばれています。

私のコードは以下の通りです。

// Create connection 
$conn = new mysqli('localhost', 'user', 'password', 'database'); 
// Check connection 
if ($conn->connect_errno > 0) { 
    die('Unable to connect to database [' . $conn->connect_error . ']'); 
} else { 
    echo "connected </br>"; 
} 

/* prepare statement */ 
if ($stmt = $conn->prepare("SELECT Status FROM hostloadslog LIMIT 5")) { 
    $stmt->execute(); 

    /* bind variables to prepared statement */ 
    $stmt->bind_result($col1); 

    /* fetch values */ 
    while ($stmt->fetch()) { 
     printf("%s %s\n", $col1); 
    } 

    /* close statement */ 
    $stmt->close(); 
} 

何か助けやアドバイスをいただければ幸いです。あなたは2つのプレースホルダを使用したが、唯一のこれまで単一の文字列を渡しているので、

printf("%s %s\n", $col1); 

が失敗した:

+0

準備完了後のエラーを確認してください – Jens

+0

準備文をif文の中に入れることはできません。 if文にexecuteを入れることもできます。 – McStuffins

+1

'$ col1'がどのように見えるかを見てください:' printf( "%s%s \ n"、$ col1); 'はいくつかの点で間違っています:2つのプレースホルダがありますが、あなたはそれが[documentation](http://php.net/manual/en/mysqli.prepare.php)に従って行うことは可能ではないと思いますので、それは –

答えて

1

だから基本的には、問題がprintfの使用でした。あなたは両方のerror_reportingE_STRICT|E_ALLまたはiniファイルに)-1に設定することができ、より簡単にこのようなデバッグコードのいずれか

echo $col1 . PHP_EOL; 
//or 
printf("%s\n", $col1); 

にそれを変更し、ondisplay_errorsを設定します。

関連する問題