2017-12-20 3 views
0

はここに私のコードです:PHP /のMysqli:接続はOKですが、SQLは実行されません

try { 
    $conn = new mysqli($servername, $username, $password, $database); 
    if (mysqli_errno()) { 
     die('<p>Failed to connect to MySQL: '.mysqli_error().'</p>'); 
    } else { 
     echo '<p>Connection to MySQL server successfully established.</p >'; 
    } 
    $sql = "SELECT * FROM `clues` WHERE `day_id` = 1"; 
    $data = mysqli_query($conn, $sql); 
    $rows = mysqli_fetch_assoc($data); 
    echo $rows["day_id"]; 
    echo "Connected successfully"; 
} 
catch(Exception $e) 
{ 
    // Display an error if cannot connect 
    echo "Connection failed: " . $e->getMessage(); 
} 

それは返す:MySQLサーバへ の接続が正常に確立します。 正常に接続しました

私は接続文がif文から動作することを知っていますが、SQLを実行して結果を取得することはできません。同様に、データベースを変更しなかったUPDATE文とINSERT文(フェッチなし)を記述しました。

+0

$行[ "ID" を]エコー;それ以外の場合は何を印刷していますかhttps://www.w3schools.com/PhP/php_mysql_select.asp – jeevanswamy21

+1

は実際に 'table'と呼ばれるテーブルですか?バックスティックを使用する場合 – RamRaider

+0

@RamRaider thx、私はバックティックを使用しました。テーブルは単なるプレースホルダです。問題は別のものです – doesknotcompute

答えて

0

テーブル名についてのコメントの前にこれを書いておきますが、特定のポイントで例外が発生した場所を見つけるのに役立ちます。また、重要ではありませんが、OOスタイルを使用して接続が開始されるため、OOスタイルを混在させるのではなく、OOスタイルを使用し続けるのが一般的です。

/* 
    try { 
     $conn = new mysqli($servername, $username, $password, $database); 
     if(mysqli_errno()) throw new Exception(sprintf('<p>Failed to connect to MySQL: %s</p>', mysqli_error())); 

     $sql = 'select * from `table` where `id` = 1'; 
     $data = $conn->query($sql); 
     if($data){ 
      while($rows=$data->fetch_assoc()){ 
       echo $rows["id"]; 
      } 
      $conn->close(); 
     } else { 
      throw new Exception('No results'); 
     } 

    }catch(Exception $e){ 
     echo "Connection failed: " . $e->getMessage(); 
    } 
*/ 


try { 
    $conn = new mysqli($servername, $username, $password, $database); 
    $sql = 'select * from `clues` where `day_id` = 1'; 
    $data = $conn->query($sql); 

    if($data && $data->num_rows > 0){ 
     while($rows=$data->fetch_assoc()){ 
      echo $rows["id"]; 
     } 
     $conn->close(); 
     $data->close(); 

    } else { 
     throw new Exception(sprintf('No results: %s',$conn->error)); 
    } 
}catch(Exception $e){ 
    echo "Error: " . $e->getMessage(); 
} 
+0

エラーをキャッチしてくれてありがとうございます。接続に失敗しました:結果はありません。 – doesknotcompute

+0

実際のsqlで質問を編集し、コマンドラインまたはguiから実行したときに同じクエリがデータを返すことを確認する必要があります – RamRaider

+0

sqlを含めるように質問が修正され、クエリがphpMyAdmin – doesknotcompute

0

上記のコードは、mysqli_errno()というエラーになります。オブジェクト指向ではなく$conn->connect_errorを使用してください。以下のコードサンプルを参照してください。 SELECTクエリを使用すると、あなたのものと簡単に置き換えることができます。

続きを読むhttps://www.w3schools.com/php/php_mysql_connect.aspからデータベース接続をご覧ください。ここでは、クエリを実行するための

https://www.w3schools.com/PhP/php_mysql_select.asp

あなたはこれを試してみることができます。

try { 
    $conn = new mysqli($servername, $username, $password, $database); 

    if ($conn->connect_error) { 
     die('<p>Failed to connect to MySQL: ' . $conn->connect_error . '</p>'); 
    } else { 
     echo '<p>Connection to MySQL server successfully established.</p >'; 
    } 

    $sql = 'SELECT * FROM table WHERE id = 1'; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
      echo $row['id']; 
     } 
    } else { 
     echo '0 results'; 
    } 
    $conn->close(); 

}catch(Exception $e){ 
    // Display an error if cannot connect 
    echo "Connection failed: " . $e->getMessage(); 
} 
0

あなたのコードでこれを試してください。私が何かを変える必要がある場合は教えてください。

<?php 
//Create the connection 

$con = mysqli_connect("HostName","UserName","password","DBName") or die("Some error occurred during connection " . mysqli_error($con)); 

// Write query 

$strSQL = "SELECT username FROM MyTable"; 

// Execute the query. 

$query = mysqli_query($con, $strSQL); 
while($result = mysqli_fetch_array($query)) 
{ 
    echo $result["username"]." 
"; 
} 

// Close the connection 
mysqli_close($con); 

?> 
0

あなたのコードはコードだけそれを試してmysqli_errno()mysqli_error()機能

$conn変数に渡し、正しいです:

try { 
    $conn = new mysqli($servername, $username, $password, $database); 
    if (mysqli_errno($conn)) { 
    die('<p>Failed to connect to MySQL: ' . mysqli_error($conn) . '</p>'); 
    } else { 
    echo '<p>Connection to MySQL server successfully established.</p >'; 
    } 
    $sql = "SELECT * FROM `clues` WHERE `day_id` = 1"; 
    $data = mysqli_query($conn, $sql); 
    $rows = mysqli_fetch_assoc($data); 
    echo $rows["day_id"]; 
     echo "Connected successfully"; 

} catch (Exception $e) { 

    // Display an error if cannot connect 
echo "Connection failed: " . $e->getMessage(); 
} 
関連する問題