2010-12-19 2 views
1

私はPHPで簡単なデータベースクラスを構築しようとしています。私はMySQLを使用しています。MySQLから1行の結果を得る

私は固執しましたが、私はデータベースから1行の結果を表示する方法を理解できません。私はデータベースから複数の行を得る方法を解決しましたが、現在はユーザー名、電子メール、レベル、reg_dateのようなものを1つだけ表示しようとしています。

マイコード:

class Database { 

    public $mysql; 

    function __construct() 
    { 
    $this->mysql = new mysqli(host, user, password, db) or die('There was a problem connecting to the db'); 
    } 

    function multiLine($sql) 
    { 
    $this->mysql->query("SET NAMES 'utf8'"); 
    $this->mysql->query("SET CHARACTER SET 'utf8'"); 

    if(($result = $this->mysql->query($sql)) != NULL) { 
     $x = array(); 
     while($row = $result->fetch_array()) { 
     $x[] = $row; 
     } 
     return $x; 
    } 
    else { 
     echo $this->mysql->error; 
    } 
    } 


    function singleLine($sql) 
    { 

     $one = array(); 
     if(($one = $this->mysql->query($sql)) != NULL) 
     { 
      $one = $result->fetch_array(); // Error here 
     } 

     return $one; 
    } 

    function __destruct() { 
    // close out the database connection; 
    $this->mysql->close(); 
    } 
} 

私の機能複数行が動作し、私はこのようにそれを使用します。

$db = new Database(); 
$sql = 'SELECT * FROM users ORDER BY id DESC'; 

$response = $db->multiLine($sql); 

<?php foreach($response as $r) : ?> 
<p>ID: <?php echo $r['id']; ?></p> 
<p>Username: <?php echo $r['username']; ?></p> 
<?php endforeach; ?> 

だから、誰かが私にこの問題を解決する方法のヒントを与えることができますか?または、多分誰かがPHPでデータベースクラスを作るための素晴らしい修道院へのリンクを持っているかもしれません。

答えて

0

あなただけのクエリの最後に1行、LIMIT 1に結果を強制的に

0

を照会するLIMIT 1を追加しない理由の問題は、それを行いますいただきました!私が理解することはできません。

multiLine()またはsingleLine()に送信する前に、結果が1行であるかどうかを確認する場合は、が表示されます。

どういうふうに扱いたいのか分かりませんが、コードを呼び出すコードが配列やオブジェクトが返されているかどうかを確認する必要があるためです。返品は一貫していなければなりません。

1
if(($one = $this->mysql->query($sql)) != NULL) 

if(($result = $this->mysql->query($sql)) != NULL) 
する必要があります
関連する問題