2016-12-02 2 views
1

Ich hoffe, Sie verstehen mein Problem, ich weiß nicht viel Englisch, aber ich werde es versuchen. Ich habe eine Seite in einem hostinger und wenn ich den Code generieren, um die Zeilen zu zeigen, gibt mir diese Fehlermeldung:Ungültiges Argument für foreach php pdo in Hostinger

Warning: Invalid argument supplied for foreach()

Anschluss-Code:

public static function conexion() { 
    try { 
     $con = new PDO('mysql:host=localhost;dbname=example', 'usuario', 'clave'); 
     return $con; 
    } catch (PDOException $e) { 
     return false; 
    } 
} 

Und:

include 'functions.php'; 
$con = Functions::conexion(); 
$sql = 'SELECT * FROM Products p, Prices ps, ProductsPrices pc where p.IDP=pc.IDP AND ps.ID=pc.ID ORDER BY p.IDP ASC'; 
foreach ($con->query($sql) as $row) { 
    echo '<tr>'; 
    echo '<td>'. $row['IDP'] . '</td>'; 
    echo '<td>'. $row['Name'] . '</td>'; 
    echo '<td>'. $row['Description'] . '</td>'; 
    echo '<td style="color: #333;">'. $row['Price'] . '</td>'; 
    echo '<td>' . '<a class="btn" href="update.php?id='.$row['IDP'].'">Edit</a>' . '</td>'; 
    echo '</tr>'; 

Aber wenn ich in localhost lade, gibt es kein Problem, zeigt die Reihen an.

Antwort

0

Fügen Sie diese Zeile vor foreach-Schleife

$sql = 'SELECT * FROM Products p, Prices ps, ProductsPrices pc where p.IDP=pc.IDP AND ps.ID=pc.ID ORDER BY p.IDP ASC'; 
$pdoStatement = $con->query($sql); 
$data = $pdoStatement->fetchAll(); 
foreach($data as $row){ 
    //... 
} 
+0

Hallo, danke fo r antwort, ich versuche ihre lösung und gibt dies: Fatal error: Aufruf an eine Member-Funktion fetchAll() auf einem Nicht-Objekt – forerser

0

Dies ist ein kleines Problem sein kann, mit Ihnen abfragen, haben Sie es in phpMyAdmin oder so ähnlich getestet ??

+0

die Abfrage ist nicht das Problem, wie ich im letzten Kommentar sage, ich versuche und zeigt die Zeilen. – forerser

0

Das liegt daran, dass, Sie sind immer noch den Host als

$con = new PDO('mysql:host=localhost;dbname=example', 'usuario', 'clave'); 

Änderung Hostnamen in den hostingers angegebenen Namen

$con = new PDO('mysql:host=hostinger_host_name;dbname=example', 'usuario', 'clave'); 

hoffte, das hilft

+0

Ich weiß das, aber ich habe auch eine Tabelle, und es zeigt. Ich denke, das ist kein Problem. Wie auch immer, danke für deine Antwort :) – forerser

0

diese Einstellung versuchen

<?php 

$sql = $con->prepare("SELECT * FROM Products p, Prices ps, ProductsPrices pc where p.IDP=pc.IDP AND ps.ID=pc.ID ORDER BY p.IDP ASC'"); 
$sq->execute(); 

$results = $sql->fetchall(PDO::FETCH_ASSOC); 

if (count($results > 0)) { 

    foreach ($con->query($sql) as $row) { 
     echo '<tr>'; 
     echo '<td>' . $row['IDP'] . '</td>'; 
     echo '<td>' . $row['Name'] . '</td>'; 
     echo '<td>' . $row['Description'] . '</td>'; 
     echo '<td style="color: #333;">' . $row['Price'] . '</td>'; 
     echo '<td>' . '<a class="btn" href="update.php?id=' . $row['IDP'] . '">Edit</a>' . '</td>'; 
     echo '</tr>'; 
    } 

} 
?> 
Verwandte Themen