我正在努力解决以下问题。几年前,我编写了一个函数来检索 MYSQL 结果(多行)。直到 PHP7,这段代码都可以正常工作:
function MultipleRows($query)
{
global $dbhost, $dbname, $dbuser, $dbpass;
mysql_connect($dbhost, $dbuser, $dbpass)
or die("Error! Couldn't <b>Connect</b>.");
mysql_select_db($dbname)
or die("Error! Couldn't <b>Select database</b>.");
$result = mysql_query($query)
or die("Error! Couldn't execute query.");
if(($result)&&(mysql_num_rows($result)>0))
{
return $result;
} else {
return false;
}
mysql_close();
}
现在在 PHP7 中,这段代码似乎不再起作用了。经过大量搜索后,我想出了这个作为替代品,但不幸的是它不起作用:
function MultipleRows($query)
{
$mysqli = new mysqli($dbhost, $dbpass, $dbuser, $dbname);
$result = mysqli_fetch_all($mysqli->query($query), MYSQLI_ASSOC);
return $result;
$mysqli->close();
}
该函数旨在使用如下代码:
$res_test = MultipleRows("SELECT id, name FROM table");
if($res_test)
{
while($res = mysql_fetch_array($res_test))
{
echo $res['id'].' '.$res['name'];
}
}
重写“显示代码”(最后一个片段)不是一个好的选择,因为在这种情况下我必须重写网站中的许多行。谁可以在这方面给我一些帮助?提前致谢!
最佳答案
mysql
扩展在 PHP 5.x 中被弃用后,已从 PHP 7 中删除。
您可以使用 mysqli
重写函数 MultipleRows()
,如下所示:
function MultipleRows($query)
{
global $dbhost, $dbpass, $dbuser, $dbname;
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
$result = $mysqli->query($query);
if ($result !== FALSE)
$result = $result->fetch_all(MYSQLI_ASSOC);
$mysqli->close();
return $result;
}
几点说明:
- 使用全局变量(
$dbhost
、$dbuser
、$dbpass
和$dbname< 不是一个好主意
) - 这种处理数据库查询的方式会让您容易受到 SQL 注入(inject)攻击
关于mysql - PHP 7 中获取 mysql 结果的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40463903/