将MySQL查询转换为MySQLi
我在我的网站上通过MySQLi建立了一个成功的连接。但是现在我的搜索脚本已经过时了,并且和我一样对此很陌生,我正在努力理解如何将我的脚本转换为mysqli。将MySQL查询转换为MySQLi
function doSearch() {
$output = '';
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace ("#[^0-9a-z]#i","",$searchq);
$query = mysql_query("SELECT * FROM entries WHERE name LIKE '%$searchq%' or description LIKE '%$searchq%' or content LIKE '%$searchq%'") or die("Could not search");
$count = mysql_num_rows($query);
if($count == 0) {
$output = '<tr><tr>No results found.</tr></td>';
} else {
while($row = mysql_fetch_array($query)) {
$eName = $row['name'];
$eDesc = $row['description'];
$eCont = $row['content'];
$id = $row['id'];
$elvl = $row['level'];
$ehp = $row['hp'];
$output .= '<tr><td><a href="http://seersvillage.com/v1.2/npc.php?id=' .$id. '" onclick="document.linkform.submit();">'.$eName.'</a></td><td>'.$eDesc.'</td><td>'.$elvl.'</td><td>'.$ehp.'</td></tr>';
}
}
return $output;
}
}
据我所知,mysql_query需要改变我是吧?尽管我完全不确定还需要改变什么。我试过看其他例子,但是我被代码覆盖了。
我有我的connect.php文件attatched的functions.php文件,其中放置了上述代码。
一些援助将不胜感激。
编辑:也忽略可怜的脚本@ $输出,虽然有一个很好的笑声。 :)
您可以在这里找到http://php.net/mysqli
谢谢,我一直在对此进行扫描。可悲的是,我仍然是新的常规MySQL。 :P所以我仍然觉得很难学习。 –
试着找到一个包装类,你可以在这里看到每个函数如何与样本一起工作。 http://www.w3schools.com/php/php_ref_mysqli.asp – eddwinpaz
这是一个更容易学习的格式。谢谢。^_^ –
更多信息$connect
变量是在你所连接的脚本设置变量。
<?php
function doSearch() {
$output = '';
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace ("#[^0-9a-z]#i","",$searchq);
$sql = "SELECT * FROM entries WHERE name LIKE '%$searchq%' or description LIKE '%$searchq%' or content LIKE '%$searchq%'";
$query = mysqli_query($connect, $sql);
$count = mysqli_num_rows($query);
if($count == 0) {
$output = '<tr><tr>No results found.</tr></td>';
} else {
while($row = mysqli_fetch_array($query)) {
$eName = $row['name'];
$eDesc = $row['description'];
$eCont = $row['content'];
$id = $row['id'];
$elvl = $row['level'];
$ehp = $row['hp'];
$output .= '<tr><td><a href="http://seersvillage.com/v1.2/npc.php?id=' .$id. '" onclick="document.linkform.submit();">'.$eName.'</a></td><td>'.$eDesc.'</td><td>'.$elvl.'</td><td>'.$ehp.'</td></tr>';
}
}
return $output;
}
}
如果你要去打扰升级你的MySQL,你应该考虑PDO为PDO支持12个不同的驱动程序,而不是库MySQLi,只支持MySQL。
但是这并不回答他的问题。 – dsimer
我们暂时只会使用MySQL。我正在改变我的所作所为,因为我被告知它不安全并正在停止使用。安全是我最需要保证的。 –
一般来说,mysqli是一个直接替代品。唯一的真正的区别是mysqli使用'($ con,$ query)'类型参数而不是'($ query,$ con)'在mysql中。但要正确转换为mysqli,您需要从根本上重写所有查询以利用占位符和准备好的语句。函数名称大多是1:1,只需添加一个'i'。 –
你需要替换所有的mysql交互函数:mysql_query,mysql_fetch_array和mysql_num_rows。因为我没有给你替换,所以没有答案,但你可以在'mysqli'文档中查看它。 – alexis