我只是在阅读了SQL注入攻击后编辑了我的搜索脚本.我正在尝试使用PDO而不是常规的mysql连接从我的脚本中获取相同的功能.所以我一直在阅读有关PDO的其他帖子,但我不确定.这两个脚本会提供相同的功能吗?
使用PDO:
$pdo = new PDO('mysql:host=$host; dbname=$database;', $user, $pass);
$stmt = $pdo->prepare('SELECT * FROM auction WHERE name = :name');
$stmt->bindParam(':name', $_GET['searchdivebay']);
$stmt->execute(array(':name' => $name);
Run Code Online (Sandbox Code Playgroud)
使用常规mysql:
$dbhost = @mysql_connect($host, $user, $pass) or die('Unable to connect to server');
@mysql_select_db('divebay') or die('Unable to select database');
$search = $_GET['searchdivebay'];
$query = trim($search);
$sql = "SELECT * FROM auction WHERE name LIKE '%" . $query . "%'";
if(!isset($query)){
echo 'Your search was invalid';
exit;
} //line 18
$result = mysql_query($trim);
$numrows = mysql_num_rows($result);
mysql_close($dbhost);
Run Code Online (Sandbox Code Playgroud)
我继续使用常规示例 …
请对我很轻松,我刚刚开始学习PDO,并且仍然找到了如何将我的mysqli转换为PDO的方法.
所以我有一个函数来从我的数据库中获取内容
function getContent() {
$db = PDOconn();
$query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3";
$sql = $db->prepare($sql);
$row = $sql->fetchAll(PDO::FETCH_ASSOC);
return $row;
}
Run Code Online (Sandbox Code Playgroud)
通常当我$row在mysqli中返回时,我会fetch_assoc()在我的while循环中定义.
while ($row = $result->fetch_assoc()) {
$id = $row['id'];
$content = $row['content'];
}
Run Code Online (Sandbox Code Playgroud)
现在,因为(PDO::FETCH_ASSOC)已经在我的函数中声明了.
如何正确创建我的while循环以在PDO中打印值?
[编辑]更新的代码
我将while在函数之外声明我的循环.所以我需要一些东西从我的功能返回,但我不知道那是什么..
function getContent() {
$db = PDOconn();
$query = "SELECT * FROM posts ORDER BY id DESC LIMIT 0,3";
$sql = $db->prepare($query);
$row = $sql->execute(); …Run Code Online (Sandbox Code Playgroud) PDO中这两个代码的等价物是什么
第一:
$row=mysql_fetch_array($query);
Run Code Online (Sandbox Code Playgroud)
第二:
while($row=mysql_fetch_array($query)){
$data[]=$row;
}
Run Code Online (Sandbox Code Playgroud)
我在下面使用这些代码,但我猜它们并不完全相同,因为其余代码不起作用.
$row = $query->fetch(PDO::FETCH_NUM);
Run Code Online (Sandbox Code Playgroud)
和
$data[] = $query->fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)