2010-12-19 24 views
1

Ich versuche, eine einfache Datenbankklasse in PHP zu erstellen, und ich verwende MySQL.Holen Sie sich ein Zeilenergebnis von MySQL

Jetzt habe ich festgesteckt, ich kann es nicht herausfinden, wie ich eine Zeile Ergebnis aus einer Datenbank anzeigen kann. Ich habe gelöst, wie ich mehrere Reihen von der Datenbank erhalten kann, aber jetzt versuche ich, nur einen wie Benutzernamen, E-Mail, Niveau, reg_date zu zeigen.

Mein Code:

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(); 
    } 
} 

meine Funktion multiline funktioniert und ich verwende es dies wie:

$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; ?> 

So einen Hinweis jemand kann mir, wie das Problem zu lösen? ODER vielleicht hat jemand eine Verbindung zu einem großen Tuturial, um eine Datenbankklasse in PHP zu erstellen.

Antwort

0

kann ich nicht verstehen, was das Problem, warum Sie nicht LIMIT 1 nur fügen

0

Um zu erzwingen, das Ergebnis eine Zeile abzufragen, LIMIT 1 am Ende der Abfrage wird es tun.

Wenn Sie überprüfen möchten, ob das Ergebnis eine Zeile enthält, teilt Ihnen mysql_num_rows vor dem Senden an multiLine() oder singleLine() mit, wie viele Zeilen in Ihrer Abfrage enthalten waren.

Ich bin nicht sicher, warum Sie sie anders behandeln möchten, weil der Code, der es aufruft, dann überprüfen müsste, ob ein Array oder ein Objekt zurückgegeben wird. Die Rendite sollte konsistent sein.

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

sollte

if(($result = $this->mysql->query($sql)) != NULL) 
Verwandte Themen