2016-12-02 158 views
1

我希望你能理解我的问题,我不太懂英文,但我会尝试。我在hostinger已经页面,当我生成的代码显示行,使我这个错误:为hostinger提供的foreach php pdo提供的无效参数

Warning: Invalid argument supplied for foreach()

连接代码:

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

和:

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>'; 

但是,当我在本地加载没有任何问题,显示行。

回答

0

foreach循环

$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

嗨,谢谢fo r答案,我尝试你的解决方案,并给出这一点:致命错误:调用一个非对象的成员函数fetchAll() – forerser

0

这可能是与您查询有点问题之前加入这一行,你在phpMyAdmin或类似的测试它?

+0

查询是没有问题的,正如我在上次评论中所说的,我试着显示行。 – forerser

0

那是因为,你还在设置主机

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

改变主机名提供名称hostingers

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

希望这有助于

+0

我知道,但我也有一个图表,它显示。我认为不是问题。无论如何,谢谢你回复:) – forerser

0

试试这个

<?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>'; 
    } 

} 
?>