我正在从PHP 5迁移到PHP 7,并做了一个grep命令来获取所有mysql_query并将其更改为mysqli_query。问题在于,显然参数是使用过程样式更改的。
mysql_query($query, $link_identifier)
mysqli_query($link_identifier, $query)
即使使用面向对象的样式,它们仍然是相同的参数。
问题是,如果我将mysqli_query
的参数保留为$query, $link
,以为该功能足够智能以检测哪个是哪个,或者我需要更改所有参数以匹配正确的参数,它将起作用吗? ?
答案 0 :(得分:-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);