2016-10-06 2 views
-1

私は記事のためにmySQLデータベースをチェックし、ブログを動的に生成するためにHTMLコードをエコーする簡単なクエリを持っています。クエリはphpMyAdminで直接実行すると動作しますが、.phpファイルから呼び出されると「結果なし」と表示されます。クエリは次のとおりです。PHPのDBクエリは結果は得られませんが、phpMyAdminのクエリは同じですか?

SELECT * FROM article ORDER BY article_timestamp DESC LIMIT 4; 

phpMyAdminでテストしたときにうまく動作します。しかし、それは私のPHPコードではない。以下のPHPコード:

<?php 

// establish connection 
function connect() { 
    $connection = mysql_connect ("localhost", "user", "password", "dbname") or die(mysql_error); 

    return $connection; 
} 

$connection = connect(); 


// define article variables 

$article_id; 
$article_title; 
$article_headline; 
$article_image_path; 
$article_body; 
$article_author; 
$article_tags; 
$article_timestamp; 

$myquery = "SELECT * FROM article ORDER BY article_timestamp DESC LIMIT 4"; 

$result = mysql_query($connection, $myquery); 

if (mysql_num_rows($result) > 0) { 

    while($row = mysql_fetch_array($result)) { 
     $article_id = $row['article_id']; 

     $article_title = $row['article_title']; 

     $article_headline = $row['article_headline']; 

     $article_image_path = $row['article_image_path']; 

     $article_body = $row['article_body']; 

     $article_author = $row['article_author']; 

     $article_tags = $row['article_tags']; 


     $article_timestamp = $row['article_timestamp']; 

     echo "<!-- Blog Post --> 
       <h2> 
        <a href=\"post.php?id=$article_id\">$article_title</a> 
       </h2> 
       <p class=\"lead\"> 
        by $article_author 
       </p> 
       <p>Posted on $article_timestamp</p> 
       <hr> 
       <img class=\"img-responsive\" src=\"$article_image_path\" alt=\"\"> 
       <hr> 
       <p class=\"lead\">$article_headline</p> 
       <a class=\"btn\" style=\"border-color: #4c044d;\" href=\"post.php?id=$article_id\">Read More</a> 

       <hr>"; 
    } 
} 

else { 
    echo 'No Results found'; 
} 

mysql_close ($connection); 
?> 

DB接続が正常に動作しているはずです。私はこのコードを追加しました:

if ($connection == false) { 
    echo 'whoops'; 
} 

そして、条件はさまざまなチェックポイントに置かれても決して満たされません。誰かが私に手を差し伸べることができる?これと数え切れないほどのサイコロで時間を費やしました。 ありがとうございます。

+0

なぜすべての変数を2回宣言しますか? – Thomas

+0

廃止予定の 'mysql_ * '関数を使用しないでください。 PHP 5.5以降では廃止され、PHP 7では完全に削除されています。これらは安全性も欠けています。代わりにMySQLiまたはPDOを使用してください。 –

+0

エラー報告が有効になっていますか?エラーログを確認しましたか? –

答えて

1

またmysqlのは、新しいバージョンのPHPで推奨されませんよう*は推奨されません

+0

あまりにも多くの試行錯誤がありましたが、問題は自分の資格情報であることに気付きました。 Cpanelは私がDBにアクセスするために作成したユーザーを拒否していたので、元のCpanelの資格情報を使ってこのトリックを行った。助けてくれてありがとう。また、mysqliを使用するようにDB呼び出しを変更しました。 –

+0

ようこそ、これらのコメントは、私に多くのクエリstackoverflowで質問されます。 –

0

MYSQL_が

* mysqli_使用しようとか、PDO

mysqliの使用してくださいのような

$connection = mysql_connect ("localhost", "root", "redhat") or die(mysql_error()); 
    mysql_select_db('test'); 

の下にあなたのconnect関数を変更してください。

警告mysql_query、mysql_fetch_array、mysql_connectなどの拡張機能はPHP 5.5.0では廃止され、PHP 7.0.0では削除されました。 代わりに、MySQLiまたはPDO_MySQL拡張を使用する必要があります。

 <?php 

    // establish connection 
    function connect() { 

     $servername = "localhost"; //host name 

     $username = "username"; //username 

     $password = "password"; //password 

     $mysql_database = "dbname"; //database name 

     $connection = mysqli_connect($servername, $username, $password,$mysql_database) or die("Connection failed: " . mysqli_connect_error()); 

     return $connection; 
    } 

    $connection = connect(); 

    $myquery = "SELECT * FROM article ORDER BY article_timestamp DESC LIMIT 4"; 


    $stmt = $connection->prepare($myquery); 

        //The argument may be one of four types: 

        //i - integer 
        //d - double 
        //s - string 
        //b - BLOB 
        //change it by respectively 

        $stmt->execute(); 

        $get_result =$stmt->get_result(); 

        $row_count= $get_result->num_rows; 


    if ($row_count > 0) { 

     while($row = mysqli_fetch_array($get_result)) { 
      $article_id = $row['article_id']; 

      $article_title = $row['article_title']; 

      $article_headline = $row['article_headline']; 

      $article_image_path = $row['article_image_path']; 

      $article_body = $row['article_body']; 

      $article_author = $row['article_author']; 

      $article_tags = $row['article_tags']; 


      $article_timestamp = $row['article_timestamp']; 

      echo "<!-- Blog Post --> 
        <h2> 
         <a href=\"post.php?id=$article_id\">$article_title</a> 
        </h2> 
        <p class=\"lead\"> 
         by $article_author 
        </p> 
        <p>Posted on $article_timestamp</p> 
        <hr> 
        <img class=\"img-responsive\" src=\"$article_image_path\" alt=\"\"> 
        <hr> 
        <p class=\"lead\">$article_headline</p> 
        <a class=\"btn\" style=\"border-color: #4c044d;\" href=\"post.php?id=$article_id\">Read More</a> 

        <hr>"; 
     } 
    } 

    else { 
     echo 'No Results found'; 
    } 


        $stmt->close(); 
        $connection->close(); 


    ?> 
関連する問題