Lista de date PHP MYSQL în cadrul tabelului

de mai jos este codul meu PHP pentru a afișa toate datele din baza mea de date într-un tabel ..

dacă folosesc acest cod de mai jos pentru a vă conecta și a selecta DB mai degrabă decât folosind DOP:

 mysql_connect("localhost","root","12345678") or die(mysql_error());
   mysql_select_db("clubresults") or die(mysql_error());
   $query=mysql_query("SELECT * from events ORDER By EventID ASC") or die(mysql_error());

Ieșirea îmi dă un tabel cu toate datele afișate corect.

Cu toate acestea, dacă folosesc DOP .. mi-a dat această eroare:

Warning: mysql_num_fields() expects parameter 1 to be resource, object given in C:\xampp\htdocs\clubresults\listevents.php on line 52

Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in C:\xampp\htdocs\clubresults\listevents.php on line 58

Mai jos este codul PHP complet pentru a apuca datele și a plasa într-un tabel (Nu funcționează) cineva capabil să sublinieze unde am o greșeală? pentru că nu pot să-mi dau seama singură .. Toate sugestiile sunt într-adevăr apreciate! Mulțumiri!

$pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678');
        #Set Error Mode to ERRMODE_EXCEPTION.
        $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  


   $query=$pdo->query('SELECT * from events ORDER By EventID ASC');


   <<<<<<<<<<<<<<<<thIS BIT WORKS IF NOT USING PDO>>>>>>>>>>
$numfields = mysql_num_fields($query);
       print("<table border=\"1\">\n<tr>\n");
       for ($i=0; $i<$numfields; $i++) {
          printf("<th>%s</th>\n", mysql_field_name($query,$i));
       }
       print("</tr>\n");
       while ($row = mysql_fetch_row($query)) {
          print("<tr>\n");
          for ($i=0; $i%s</td>\n", $row[0],$row[$i]);
          }
          print("</tr>\n");
       }
       print("</table>\n");
1
mysql_num_fields nu este compatibil cu DOP
adăugat autor Pekka 웃, sursa
oh ... ce ar trebui să folosesc atunci?
adăugat autor Tuzki, sursa

1 răspunsuri

Nu veți putea folosi mysql_num_fields() sau mysql_fetch_row() cu PDO - fac parte dintr-un API diferit, vechea extensie MySQL.

Instead, since you have called PDO::query(), call $query->fetch(). Use the first row's array keys to build your table heading.

$query = $pdo->query('SELECT * from events ORDER By EventID ASC');
$rowset = array();

if ($query) {
  while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
   //Build array of rows
    $rowset[] = $row;
  }    

 //Output header first
  $headrow = $rowset[0];
  print("<table border=\"1\">\n<tr>\n");
 //Use $rowset[0] to write the table heading
  foreach ($headrow as $col => $val) {
    printf("<th>%s</th>\n", $col);
  }
  print("</tr>");

 //Then output table rows.
 //Outer loop iterates over row
  foreach ($rowset as $row) {
     print("<tr>");
    //Inner loop iterates over columns using $col => $val
     foreach ($row as $col => $val) {
       //We don't know your column names, but substitute the first column (the ID) for FIRSTCOL here
        printf("<td>%s</td>\n", $row['FRISTCOL'],$val);
     }
     print("</tr>");
  }
}
print("</table>");

addenda

În general, aș recomanda să nu folosiți SELECT * și să scrieți în mod dinamic titlurile coloanelor. În schimb, să fie explicit despre coloanele pe care le cereți în instrucțiunea SELECT și să fiți explicit despre ele în tabelul pe care îl scrieți. În acest fel, puteți fi determinist cu privire la ordinea în care apar coloanele și nu veți fi prins niciodată prin adăugarea de coloane în tabel, care nu ar fi trebuit să apară în ieșirea pe ecran.

1
adăugat
Mulțumesc că îl ajuți pe Michael! Am încercat codul dvs. .. erorile din postarea mea originală au dispărut, dar am o nouă eroare: ("Eroare fatală: Nu pot folosi obiect de tip PDOStatement ca array în C: \ xampp \ htdocs \ clubresults \ listevents.php pe linia 53 ") unde linia 53 este $ headrow = $ query [0];
adăugat autor Tuzki, sursa
Mulțumesc mult lui Michael! Codul dvs. funcționează, dar .. erm totul este în 1 rând .. Unde ar trebui să pun
pentru a face fiecare intrare într-un rând?
adăugat autor Tuzki, sursa
Esti o legenda Michael Multumesc mult! dar îmi pare rău o ultima întrebare de la mine .. în tabel am un "EventID, EventName, EventDate și Locație" SELECT * de la evenimente ORDER BY EventID ASC "Voi fi capabil de a selecta toate cele de mai sus EXCEPT pentru EVENTID coz i dont doriți utilizatorii pentru a vedea ID-ul .. există o modalitate de a-l ascunde .. dar încă să-l pentru ID-ul de eveniment?
adăugat autor Tuzki, sursa
@BillChen Ne pare rău, am citit greșit documente. Mai întâi va trebui să preluați (). Am modificat cele de mai sus pentru a construi o matrice asociativă prin fetch (), apoi folosiți-o pentru a ieși din tabel
adăugat autor Michael Berkowski, sursa
@BillChen Ne pare rău, am pierdut etichetele <tr> . Adăugat mai sus.
adăugat autor Michael Berkowski, sursa
@BillChen Doar nu folosiți SELECT * . Explicați lista coloanelor necesare: SELECT EventName, EventDate, Location FROM events .... Asta este de obicei mai înțelept decât să faci SELECT *
adăugat autor Michael Berkowski, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT

MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.