如何使用PDO和php正确获取对象
我在我的网站上实现了一个搜索框,在我决定防范sql注入之前,这个搜索框工作得非常好。我决定使用PDO,因为很多人认为它比使用mysql\u string\u escape更好。当我试图从数据库中获取数据时,它什么也不返回,但我知道其中有记录 我的代码 db.php result.php如何使用PDO和php正确获取对象,php,mysql,pdo,mysqli,fetch,Php,Mysql,Pdo,Mysqli,Fetch,我在我的网站上实现了一个搜索框,在我决定防范sql注入之前,这个搜索框工作得非常好。我决定使用PDO,因为很多人认为它比使用mysql\u string\u escape更好。当我试图从数据库中获取数据时,它什么也不返回,但我知道其中有记录 我的代码 db.php result.php 我得到了错误的undefined方法fetchAll,我发现需要安装一个驱动程序才能让fetchAll工作。这是我不想做的。如何正确地从数据库中获取数据?在本例中,您没有使用PDO连接到数据库,因此您试图在查询中
我得到了错误的undefined方法fetchAll,我发现需要安装一个驱动程序才能让fetchAll工作。这是我不想做的。如何正确地从数据库中获取数据?在本例中,您没有使用PDO连接到数据库,因此您试图在查询中接收的数据无效
while($list = $get_foo->fetchAll(PDO::FETCH_ASSOC))
学习如何使用PDO连接、检索和插入数据(以及准备语句,这是防止SQL注入的功能)的最佳地方是:
正如你们所说,我不是在创建PDO连接,而是在使用mysqli。很抱歉,我已经成功创建了PDO连接并重写了代码。现在很好用 解决方案: db.php
您没有使用
PDO
,您在这里使用的是mysqli
。@D4V1D好的,这是我第一次尝试。如何正确使用pdo?而且fetchAll
不需要“安装驱动程序”。但是,在while($list=…)
条件下,它没有意义。逐行获取通常就足够了,而且foreach($result as$list)
会更简单(如果您使用的是PDO)。还可以使用herdoc代替繁琐的echo..
字符串修补
<?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))
while($list = $get_foo->fetchAll(PDO::FETCH_ASSOC))
<?php
$host = 'localhost';
$dbname = 'name';
$username = "root";
$password = "";
$conn = new PDO('mysql:host=localhost;dbname=name', $username,
$password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
if (isset($_GET['search'])){
$search_query = $_GET['user_query'];
$stmt = $conn->prepare("SELECT * FROM `food`
WHERE `food_keywords` LIKE :search ");
$search_query = "%".$search_query."%";
$stmt->bindParam(':search',$search_query, PDO::PARAM_STR);
$stmt->execute();
//fetch results set as object and output HTML
while($obj = $stmt->fetch())
{
//rest goes here
}
}
?>