2015-10-26 3 views
6

私はしばらくのうちにPHPに触れておらず、私のデータベースの5つの最近のエントリを選択してそれらを画面に印刷しようとしました。日付に基づいて最新の5行を選択してください

mysqlコマンドはもうお勧めできません。代わりにPDO-> mysqlを使用することをお勧めします。私は、配列に値を入れて、ループして出力結果を作成しなければならないと仮定してい

SELECT id,title,date,author FROM table ORDER BY date DESC LIMIT 5; 

私のクエリは、このようなものです。

<?php 
$db = new PDO('mysql:dbhost='.$dbhost.';dbname='.$dbname, $user, $pass); 

while() { 
    print($title[$i], $date[$i], $author[$i]); 
    $i++ 
} 

$db = null; 

?> 

私は上記のコードでギャップを埋めていません。

更新:$デシベル=新しいPDO ....行はエラーメッセージを報告している:PDOがインストールされていることが確認されて有効になっている

PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Can't connect to local MySQL server through socket... in /var/... 

。サーバー上の私の他のWebアプリケーションは、同じリモートのmysqlサーバーに接続できます。ループ内

答えて

4
<?php 
$host = 'localhost'; $db = 'db-name'; $user = 'db-user'; $pw = 'db-password'; 
$conn = new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8', $user, $pw); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
?> 

<?php 
$sql = "SELECT id,title,date,author FROM table ORDER BY date DESC LIMIT 5"; 
$query = $conn->prepare($sql); 
$query->execute(); 
$row = $query->fetch(PDO::FETCH_ASSOC); 
$totalRows = $query->rowCount(); 
?> 

<?php do { 
// print your results here ex: next line 
echo 'Title: '.$row['title'].' Date: '.$row['date'].' Author: '.$row['author'].'<br>'; 
} while ($row = $query->fetch(PDO::FETCH_ASSOC)); ?> 

ハッピー!

リソースを閉じ、解放することを忘れないでください

<?php $query->closeCursor(); ?> 

期待通りにあなたのコードの機能を確認した後、私はエラーメッセージをエコーし​​ないことをお勧めしますEDIT

。あなたは、単にプレーンテキストを使用したい場合しかし、あなたはこれを行うことができます...あなたは、あなたの質問ブロックを変更することができます

if ($conn->connect_error) { 
    die("Database Connection Failed"); 
    exit; 
} 

あなたの接続ブロックにこれを追加することができます

を... ...

try { 
    $sql = "SELECT id,title,date,author FROM table ORDER BY date DESC LIMIT 5"; 
    $query = $conn->prepare($sql); 
    $query->execute(); 
    $row = $query->fetch(PDO::FETCH_ASSOC); 
    $totalRows = $query->rowCount(); 
} catch (PDOException $e) { 
    die("Could not get the data you requested"); 
    exit; 
} 

また、エラーがエコーされないようにすることをお勧めします。デバッグにはのエラーチェックのみを使用してください。

+0

ありがとうございますが、PHPアプリケーションをリモートのmysqlサーバに接続することができません。私はPHPの致命的なエラーを取得します:捕捉されない例外メッセージでPDOException SQLSTATEソケット経由でローカルMySQLサーバに接続できません...なぜ私の$ dbhostがリモートdbサーバのIPであるのか分かりません。 – user1052448

+0

ほとんどのシステムでは、 'localhost'または '127.0.0.1'のいずれかを使用して接続します。 – Kuya

+0

私は、mysqli_connectまたは新しいmysqliではうまく接続できますが、PDOでは接続できません。 – user1052448

-1
<?php 
$db = PDO('mysql:dbhost=$dbhost;dbname=$dbname', $user, $pass); 
$sth = $db->prepare("SELECT id,title,date,author FROM table ORDER BY date LIMIT 5"); 
$sth->execute(); 

$result = $sth->fetch(PDO::FETCH_ASSOC); 
print_r($result); 
?> 

while($row = $sth->fetch()) { 
    echo $row['column']; 
} 

ドキュメントから:コーディングhttp://php.net/manual/en/pdostatement.fetch.php

+0

$ db = new PDOを維持する必要がありました。それ以外の場合は、定義されていない関数エラーが発生しました。今すぐリモートサーバ 'Uncaught exception' PDOException 'にメッセージSQLSTATE [HY000]で接続できません... – user1052448

+0

あなたのマシンにPDOドライバがインストールされていますか? http://php.net/manual/en/pdo.installation.php – Marcin

+0

PDOが利用可能でインストールされています。 – user1052448

関連する問題