【问题标题】:Using mysqli_query with mysql_query arguments使用带有 mysql_query 参数的 mysqli_query
【发布时间】:2019-02-20 09:40:48
【问题描述】:

我正在从 PHP 5 迁移到 PHP 7,我创建了一个 grep 以获取所有 mysql_query 以将它们更改为 mysqli_query。问题是,显然参数是使用程序样式更改的。

mysql_query($query, $link_identifier)
mysqli_query($link_identifier, $query)

即使使用面向对象的样式,它们仍然是相同的参数。

问题是,如果我将mysqli_query 的参数保留为$query, $link 认为该函数足够智能以检测哪个是哪个,或者我需要全部更改以匹配正确的参数,它会起作用吗?

【问题讨论】:

  • 不,这行不通。应该怎么做。但是:为什么不试试看会发生什么?
  • @NicoHaase 当你拒绝时你有消息来源吗?在mysqli_query 的特殊情况下。应该怎么做?因为有时本机函数足够聪明,可以检测您传递的参数,在这种情况下,它可以自动检测哪个参数是字符串,哪个是数组。我无法在我的环境中尝试它,长话短说。
  • 你能解释一下哪个函数可以这样做吗?我没听说过 PHP
  • @NicoHaase 我更多地考虑 JS 函数而不是 PHP tbh(不过我没有想到),因此我的问题是否可能。
  • 那么,仍然:如果您尝试一下会发生什么?制作一个让您看到这在 PHP 中是不可能的示例应该不会太难

标签: php mysql migration php-7


【解决方案1】:

参数的顺序不可互换。 Php.net mysqli_query. Php.net mysql_query.

我也测试过。
mysql_query

$link = mysql_connect("localhost","login","pass");

$db_selected = mysql_select_db('db', $link);

$sql = "SELECT * FROM table LIMIT 5";
$result = mysql_query($sql, $link);

while($row = mysql_fetch_array($result)) {
    echo $row['col_name'];
}

mysql_close($link);

mysqli_query 参数顺序错误将产生:Warning: mysqli_query() expects parameter 1 to be mysqli, string given 此处代码:

$link = mysqli_connect("localhost", "login", "pass", "db");

//arguments in wrong order
if ($result = mysqli_query("SELECT * FROM table LIMIT 5", $link)) {
    while($row = mysqli_fetch_array($result)) {
        echo $row['col_name'];
    }
}
//produce
//Warning: mysqli_query() expects parameter 1 to be mysqli, string given in

mysqli_close($link);

【讨论】:

  • 来源?你的链接和我的一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多