2016-03-23 10 views
-3

データベースに正常に接続できましたが、データを印刷しようとしましたが、ブラウザーに「接続が成功しました」という行しか表示されません。以下は私のコードです:mysqlデータベースに接続しましたが、データを印刷できません

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$db=mysqli_connect("host","root","pass","dbase"); 

if (!$db) { 
    echo "Error: Unable to connect to MySQL." . PHP_EOL; 
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; 
    exit; 
} 
echo "Connected successfully"; 
$sql = "SELECT username FROM students"; 
$result = $db->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
    echo "username: " . $row["username"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$db->close(); 
?> 

SELinuxがApache Webサーバーによって実行されるPHPスクリプトからのリモート接続をブロックしていたという問題がありました。 ターミナルのsetsebool -P httpd_can_network_connect = 1がこのトリックを行いました。

+1

PHPエラーログには何がありますか? –

+0

シンプル:データベースを選択しませんでした。間違った変数 '$ conn'を' $ db'として使っています。 –

+0

バグに問題がある場合、なぜ '@'でエラーメッセージを表示しないのですか?そのようなメッセージが役に立ちそうですね。 – Tim

答えて

1

編集:将来の読者への注意。 OPは答えが掲載された後に修正構文で自分の質問を編集し、この答えは、元のポストに基づいていた:

、コメントを追加しました:

「だから、問題をSELinuxがApache Webサーバーによって実行されるPHPスクリプトからのリモート接続をブロックしていたということでした。端末のsetsebool -P httpd_can_network_connect = 1がトリックを行いました。

まず、データベースを選択しませんでした。

およびif (!db)if (!conn)およびif ($db->connect_error)からif ($conn->connect_error)に変更する必要があります。同じ変数をコード全体で使用する必要があります。

ます。また、それは$conn(またはものは何でも使用したいのですが、私は上記の言ったように、あなたの接続のために、クエリのために同じ変数を使用する必要が間違った変数$dbを使用している。

エラー報告http://php.net/manual/en/function.error-reporting.phpは、未定義の変数についてのあなたに言っただろう

ので:。

$conn = @mysqli_connect("host","root","pass", "your_database"); 

追記:hostを、私はそれはあなたがしているホストの唯一の代表である取りますを使用して。自分のPCに接続している場合は、localhostを使用し、file///file.phpの代わりにというファイルにアクセスしてください。そうであれば動作しません。 WebブラウザはそのようなPHPディレクティブを解析せず、MySQLを含め、PHPが動作するためにはWebサーバー/ PHPをインストールする必要があります。

をし、テストしながら、@記号を削除します。

は、接続上の取扱説明書をお読みください。それらはエラーサプレッサーです。マニュアルからhttp://php.net/manual/en/mysqli.error.php

例でエラーのため

チェック:

追記:127.0.0.1またはlocalhostまたはホストされている場合、彼らはあなたが使用した設定を使用します。

<?php 
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db"); 

if (!$link) { 
    echo "Error: Unable to connect to MySQL." . PHP_EOL; 
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; 
    exit; 
} 

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL; 
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL; 

mysqli_close($link); 

誤りを見つけましょうあなたのファイルの先頭(複数可)にerror reportingを追加します。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

追記:の表示エラーが唯一のステージングで行われていない、と決して生産されなければなりません。

0

データベースに接続していない変数を使用しています。

$dbに接続しましたが、$connでクエリを実行しました。 また、データベース接続が確立されているかどうかのチェックでは、dbの前に$がありません。

端末ウィンドウにPHPエラーログが開いていると、これはいつも助けになります。エラーの99%は自分自身で修正することができます。

+0

あなたは私のコメントを見ました;-)あなたは完全にあなたの答えをあなたのオリジナルから変更したからです。 –

+0

@ Fred-ii-フォーマットされていないテキストのため、私の1番目の答えが間違っていました。私は 'if'を監督しました。これは問題ではないので、投稿を削除しました。コードを書式設定している間に、すぐに公開されるほどの評判はありません。実際のエラーを見て、私の投稿を元に戻して答えを書きました。しかし、はい、あなたは最高です。 –

+0

問題ありませんAl - *歓声* –

関連する問題