Php 如何将mysql转换为mysqli?
我试图将mysql转换为mysqli,但似乎收到了很多错误和警告我连接到数据库没有问题,但其余代码似乎错误我做错了什么 sql:Php 如何将mysql转换为mysqli?,php,mysql,mysqli,Php,Mysql,Mysqli,我试图将mysql转换为mysqli,但似乎收到了很多错误和警告我连接到数据库没有问题,但其余代码似乎错误我做错了什么 sql: 您可以通过创建mysqli对象来尝试,如下所述: 或者简单地说: $db=newmysqli($hostname、$username、$password、$database) 然后像这样查询: $result=$db->query('SQL HERE') 在您的例子中,mysqli的代码如下所示 $db = new mysqli("localhost","root",
您可以通过创建mysqli对象来尝试,如下所述:
或者简单地说:
$db=newmysqli($hostname、$username、$password、$database)代码>
然后像这样查询:
$result=$db->query('SQL HERE')代码>
在您的例子中,mysqli的代码如下所示
$db = new mysqli("localhost","root","","searchengine");
$result = $db->query(sprintf(
"SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,%d",
'%'. mysqli_real_escape_string($_GET['term']) .'%',
$_GET['results'])
);
while($ser = mysqli_fetch_array($result)) {
echo "<h2><a href='$ser[pageurl]'>$ser[pageurl]</a></h2>";
}
$db=newmysqli(“本地主机”、“根目录”、“搜索引擎”);
$result=$db->query(sprintf(
“从搜索引擎中选择*,其中像“%s”这样的页面内容限制为0,%d”,
“%”。mysqli_real_escape_字符串($\u GET['term'])。“%”,
$\u获取['results'])
);
while($ser=mysqli\u fetch\u数组($result)){
回声“;
}
尝试使用OOP风格,而不是程序化风格,它更简洁、可读性更强:
$mysqli = new mysqli("localhost", "root", "", "searchengine");
$result = mysqli->query(sprintf(
"SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,%d",
'%'. mysqli_real_escape_string($_GET['term']) .'%',
$_GET['results']));
我还建议您阅读一些关于如何使用mysqli和准备好的语句的文章,而不是仅仅黑客攻击而不阅读文档。使用准备好的语句就不需要sprintf了。以下是一些有用的链接:
PHP网站-
我在google上大约5秒钟就找到了一篇文章,看起来很不错-在mysql中,我们使用了mysql\u real\u escape\u string
,因为您无法准备语句
现在有了mysqli,您就可以准备语句了,这是首选的方式
<?php
$mysqli = new mysqli("localhost", "root", "password", "searchengine");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") ";
}
$query = "SELECT * FROM searchengine WHERE pagecontent LIKE ? LIMIT 0,?";
$stmt = $mysqli->prepare($query);
if (!$stmt) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$term = '%'.$_GET['term'].'%';
$result = $_GET['results'];
$stmt->bind_param("si", $term, $result);
$stmt->execute();
while ($ser = $stmt->fetch_assoc()) {
echo "<h2><a href='".$ser['pageurl']."'>".$ser['pageurl']."</a></h2>";
}
$mysqli->close();
?>
这些错误是什么?将错误报告添加到文件顶部错误报告(全部);ini设置(“显示错误”,1);mysqli_报告(mysqli_报告错误| mysqli_报告严格)
mysqli_query($conn,$query)
您缺少第一个$link=mysqli_connect(“本地主机”、“根”、“搜索引擎”)或die(“错误”。mysqli_错误($link))
如果您要使用mysqli\u error($link)
Plus,您也没有将DB连接传递到您的查询。谢谢,但我仍然收到一个错误,说mysqli\u real\u escape\u string只需要2个参数,当我搜索随机内容时,它会显示所有搜索词?您可以尝试$con=mysqli\u connect(“localhost”,“my\u user”,“my_password”、“my_db”);
连接并更改mysqli_real_escape_字符串($\u GET['term'])
至mysqli_real_escape_字符串($con,$\u GET['term'])
$mysqli = new mysqli("localhost", "root", "", "searchengine");
$result = mysqli->query(sprintf(
"SELECT * FROM searchengine WHERE pagecontent LIKE '%s' LIMIT 0,%d",
'%'. mysqli_real_escape_string($_GET['term']) .'%',
$_GET['results']));
<?php
$mysqli = new mysqli("localhost", "root", "password", "searchengine");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") ";
}
$query = "SELECT * FROM searchengine WHERE pagecontent LIKE ? LIMIT 0,?";
$stmt = $mysqli->prepare($query);
if (!$stmt) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$term = '%'.$_GET['term'].'%';
$result = $_GET['results'];
$stmt->bind_param("si", $term, $result);
$stmt->execute();
while ($ser = $stmt->fetch_assoc()) {
echo "<h2><a href='".$ser['pageurl']."'>".$ser['pageurl']."</a></h2>";
}
$mysqli->close();
?>