Php 如何将mysql转换为mysqli?

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",

我试图将mysql转换为mysqli,但似乎收到了很多错误和警告我连接到数据库没有问题,但其余代码似乎错误我做错了什么

sql:


您可以通过创建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();
?>