【发布时间】:2015-06-02 11:32:05
【问题描述】:
我在我的网站中实现了一个搜索框,在我决定防止 sql 注入之前,它运行良好。我决定使用 PDO,因为很多人认为它比使用 mysql_string_escape 更好。当我尝试从我的数据库中获取数据时,它什么也不返回,但我知道那里有记录。
我的代码
db.php
$mysqli = new mysqli("localhost","root", "", "1000_AD");
result.php
<?php
if (isset($_GET['search'])){
$search_query = $_GET['user_query'];
$get_foo = $mysqli->prepare("SELECT * FROM `food` WHERE `food_keywords`
LIKE ?");
$search_query = "%".$search_query."%";
$get_foo->bind_param('s',$search_query);
$get_foo->execute();
$obj = $get_foo->fetch();
if($obj==0){
echo "<h4>No results where found!</h4>";
}
//fetch results set as object and output HTML
while($list = $get_foo->fetch())
{
$foo_id = $list['food_id'];
echo '<div class="food">';
echo '<form method="post" action="basket.php" id = "add-basket-form"
>';
echo '<h4>'.$list['food_title'].'</h4>';
echo '<div class="pic"><img src="admin/food_images/'.$list['food_image'].'"
width= "180" height= "160"></div>';
echo "<p><b>£".$list['food_price']."</b></p>";
echo '<div class="sp-quantity">
<div class="sp-minus fff"> <a class="ddd">-</a>
</div><div class="sp-input"> <input type="text" name= "product_qty" class
="quntity-input" value="1" /></div>
<div class="sp-plus fff"> <a class="ddd">+</a> </div></div>';
echo '<div class = "btn"><a href="info.php?foo_id='.$list['food_id'].'"
style="float:left">INFO</a></div>';
echo '<div class = "add_b"><button>Add to Basket</button></div>';
echo '<input type="hidden" name="food_code"
value="'.$list['food_id'].'" />';
echo '<input type="hidden" name="type" value="add" />';
echo '</form>';
echo '</div>';
}
}
?>
它成功获取了行数,因为它两次回显按钮以显示找到的两条记录,这是正确的。问题是..它没有从数据库中获取标题、图像或价格。我尝试了很多建议,例如
while($list = $get_foo->fetchAll(PDO::FETCH_ASSOC))
我收到错误 undefined method fetch all,我发现您需要安装驱动程序才能使 fetchAll 工作。我不想这样做。如何正确地从我的数据库中获取数据?
【问题讨论】:
-
你没有使用
PDO,你在这里使用mysqli。 -
@D4V1D 好的,这是我第一次尝试。如何正确使用 pdo?
-
并且
fetchAll不需要“安装驱动程序”。不过,这在while ($list = ...)条件下没有意义。逐行获取通常就足够了,foreach ($result as $list)会更简单(如果您使用的是 PDO)。还可以使用 HEREDOC 代替繁琐的echo ..字符串修补。 -
这里有一个很好的使用PDO的教程code.tutsplus.com/tutorials/…
标签: php mysql pdo mysqli fetch