为hostinger提供的foreach php pdo提供的无效参数
问题描述:
我希望你能理解我的问题,我不太懂英文,但我会尝试。我在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>';
但是,当我在本地加载没有任何问题,显示行。
答
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){
//...
}
答
那是因为,你还在设置主机
$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
答
试试这个
<?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>';
}
}
?>
嗨,谢谢fo r答案,我尝试你的解决方案,并给出这一点:致命错误:调用一个非对象的成员函数fetchAll() – forerser