2016-06-03 12 views
1

Ich erstelle ein Formular, um Firma zu registrieren und in DB einzufügen. hat auch ein Formular erstellt, um die Kosten und den Verkaufspreis jedes Unternehmens einzugeben. doch hat dies in DB eingeführt worden ist, versuche ich es auf dem Tisch ausgegeben, aber es war die Firma ID anstelle des Namens zeigt ... unten bitte erläutern besserProblem zur Ausgabe von mysql Ergebnis

Firma DB

|id | company_name | 
|1 | Oliva Ltd | 
|2 | Bone Mill | 

comp_product DB

|id | company_id | cp  | sp | 
|3 | 2   | 20000 | 18000 | 
|4 | 1   | 3000 | 100 | 

Die Hilfe, die ich brauche ist alle d ausgeben ata von comp_product DB durch Darstellung der company_id mit ihrer company_name von der Firma DB.

Ouput Tabelle

| company_id | cp  | sp | 
| Bone Mill | 20000 | 18000 | 
| Oliva Ltd | 3000 | 100 | 

i Balg Code versucht, aber ich war nur eine Zeile zeigt.

<table> 
          <thead> 
          <tr> 
           <th>company_id</th> 
           <th>cp</th> 
           <th>sp</th> 
          </tr> 
          <?php 

          $result = mysql_query("SELECT * FROM comp_product ORDER BY id DESC"); 
           while($row = mysql_fetch_array($result)) 
           { 
            $result = mysql_query("SELECT * FROM company WHERE id ='".$row['company_id']."'"); 
              while($rowz = mysql_fetch_array($result)) 
               { $name = $rowz['company_name']; } 
            ?> 
          <tr> 
           <td><?php echo $name ?></td> 
           <td><?php echo $row['cp'] ?></td> 
           <td><?php echo $row['cp'] ?></td> 
          </tr> 
          <?php 
           } 
           ?> 
         </table> 

anzeigen kann ich dies tun. Danke für Ihr Verständnis

+1

[Kleine Bobby] (http://bobby-tables.com/) sagt [Ihr Skript gefährdet für SQL Injection Attacks.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php).Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

+0

Bitte [stoppen Sie die Verwendung von mysql_ * 'Funktionen] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). [Diese Erweiterungen] (http://php.net/manual/en/migration70.removed-exts-sapis.php) wurden in PHP 7 entfernt. Erfahren Sie mehr [vorbereitet] (http://en.wikipedia.org/ (http://php.net/manual/en/pdo.prepared-statements.php) und [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) und erwäge die Verwendung von PDO, [es ist wirklich ziemlich einfach] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

ok .. danke für den Ratschlag .... wie kann ich PDO verwenden, um das Ergebnis zu bestimmen – sammyltk

Antwort

2

Sie benötigen eine Abfrage

SELECT `company`.`company_name`, `comp_product`.`cp`, `comp_product`.`sp` 
FROM `company` 
LEFT JOIN `comp_cp` 
ON `company`.`id` = `comp_product`.`company_id` 

Sie JOIN brauchen nicht zwei Abfragen, können Sie durch die Ergebnisse einer nur Schleife. Wenn Sie dies auf ein Unternehmen beschränken möchten, können Sie eine WHERE-Klausel hinzufügen.


Zusätzlich müssen Sie stop using mysql_* functions. These extensions wurden in PHP 7 entfernt. Informieren Sie sich über prepared Anweisungen für PDO und MySQLi und ziehen Sie die Verwendung von PDO, it's really pretty easy, in Betracht.

+0

Danke ... kann ich auch Anfrage in PDO verbinden, um das Ergebnis zu erhalten, Umzug nach PDO jetzt – sammyltk

+0

Ja, jede Abfrage kann durchgeführt werden Verwenden der PDO-API. –

+0

Ich habe mit PDO begonnen, es funktioniert, aber Beitritt der Abfrage, aber ich habe eine Firma der Firma DB nur 3 Daten machen ... aber ich habe noch 2 Daten in comp_product DB. Problem ist, dass es alle 3 Daten zeigt und auf eine leere die dritte Zeile setzt ... – sammyltk

0

Versuchen Sie, diese

"SELECT company.company_name as company_id,comp_product.cp 
,comp_product.sp FROM company inner join comp_product on 
company.id = comp_product.company_id 
ORDER BY company.id DESC" 

Sie gewünschte Ergebnis erhalten.

0

Sie müssen diese Abfrage verwenden, die Daten richtig zeigen:

mysql_query ("SELECT company.company_name as company_id,comp_product.cp 
,comp_product.sp FROM company where 
company.id = comp_product.company_id 
ORDER BY company.id DESC"); 
0

Das Problem mit Ihrem Code eine Zeile ausgibt, ist einfach, weil Sie die $result Variable für beide Abfragen sind die Wiederverwendung.

Das Abfrageergebnis name überschreibt die Preisanfrage.

Ihr Code wie folgt aussieht jetzt:

$result = mysql_query("SELECT * FROM comp_product ORDER BY id DESC"); 
while($row = mysql_fetch_array($result)){ 

    $result = mysql_query("SELECT * FROM company WHERE id ='".$row['company_id']."'"); 
    while($rowz = mysql_fetch_array($result)){ 

     $name = $rowz['company_name']; 
} 

Ändern Sie es an:

$result = mysql_query("SELECT * FROM comp_product ORDER BY id DESC"); 
while($row = mysql_fetch_array($result)){ 

    $name_query_result = mysql_query("SELECT * FROM company WHERE id ='".$row['company_id']."'"); 
    while($rowz = mysql_fetch_array($name_query_result)){ 

     $name = $rowz['company_name']; 
}