从mysql _query转换为mysqli_query

时间:2019-06-02 14:45:15

标签: php mysqli

自从Webhost从PHP5-> PHP7迁移以来,我有许多需要修改的带有MySQL查询的简单PHP文件。我几乎是一位PHP / MySQL的初学者,试图把我的头放在从MySQL到MySQLi的变化上。

我已经开始阅读PHP文档re:MySQLi,但此刻被mysqli_query困住了。

这是到目前为止我尝试过的MySQLi代码:

<?php
$con = mysqli_connect("localhost”,     “my_user","my_password,"my_db”);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$result = mysqli_query("SELECT image, caption
            FROM tbllinkcat, tblimages
        WHERE tbllinkcat.catid = tblimages.catid
            AND tbllinkcat.catid=1;");      

while($row = mysql_fetch_array($result))
  {
    echo $row['image'];
    echo "<br />";
    echo $row['caption'];
    echo "<br />";
  }
mysql_close($con);
?>

我非常确定mysqli_connect代码可以正常工作,但是我在mysqli_query代码上遇到错误(错误:警告:mysqli_query()至少需要2个参数。

我很确定一旦纠正mysqli_query我也会在mysql_fetch_array上得到错误。因此,现在我想知道是否有人可以给我展示一个mysqli_query的示例,该示例适用于上面我的代码中的特定SQL语句?我将继续阅读MySQli和mysqli_query的PHP文档。谢谢。

3 个答案:

答案 0 :(得分:0)

<?php
$con = mysqli_connect("localhost”,“my_user","my_password”,"my_db”);
   //establish database connection
if (!$con)
  {
  die('Could not connect:'.mysqli_error());
  }

$result = mysqli_query($con,"SELECT image,caption FROM tbllinkcat, tblimages WHERE tbllinkcat.catid = tblimages.catid AND tbllinkcat.catid=1");      
//perform sql select query with database connection
while($row = mysqli_fetch_array($result))
  {
    echo $row['image'];
    echo "<br />";
    echo $row['caption'];
    echo "<br />";
  }
mysqli_close($con);
?>

有关更多信息,请阅读:- https://www.php.net/manual/en/mysqli.query.php

答案 1 :(得分:0)

mysqli_query需要两个参数:

  • 您的数据库连接
  • 查询

这将导致以下结果:

$result = mysqli_query($con, "SELECT image, caption FROM tbllinkcat, tblimages WHERE tbllinkcat.catid = tblimages.catid AND tbllinkcat.catid=1;");   

您在连接函数中也有一些看起来很奇怪的引号,请更正它们:

$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");

要获取数组,请使用:

while($row = mysqli_fetch_assoc($result))
{
    echo $row['image'];
    echo "<br />";
    echo $row['caption'];
    echo "<br />";
}

最后,关闭连接:

mysqli_close($con);

  

注意:众所周知,在通过用户输入使用查询时,请使用prepared statementsbind_param。这将防止SQL注入攻击。我将在下面显示和示例。

$stmt = $db->prepare("SELECT * FROM users WHERE username = ?");

$username = $_POST['username'];

$stmt->bind_param('s', $username);

$result = $stmt->execute();

答案 2 :(得分:-2)

我看到您没有花时间阅读mysqli文档https://php.net/manual/en/book.mysqli.php

您必须将连接作为参数传递给mysqli_query

mysqli_query($con,"SELECT image, ...");      

还将 mysql_fetch_array 更改为 mysqli_fetch_array