当我升级到最新的 PHP 版本时,我的代码停止工作

问题描述 投票:0回答:1

`

$phone = $_POST[phone];
$name = $_POST[name];
$loc = $_POST[loc];
$session = $_POST[session];


include('config.php');
$sql=mysql_query("select * from appt WHERE phone=$phone AND bywho=2 OR phone=$phone AND verified=1 ORDER by aid DESC LIMIT 1");
while($row=mysql_fetch_array($sql))
{
$namecheck = $row[name];
}

当我升级到最新的 PHP 版本时,我的代码停止工作。它在较旧的 PHP 版本中运行良好。这有什么问题吗?请帮忙

php version
1个回答
0
投票

您提供的代码似乎使用了已弃用的 MySQL 函数,这些函数在 PHP 7 中已删除,并且在 PHP 8 中不可用。不再支持函数 mysql_query() 和 mysql_fetch_array()。相反,您应该使用 MySQLi 或 PDO 扩展在 PHP 中进行数据库交互。

这是使用 MySQLi 的代码的更新版本,假设您已经建立了与数据库的连接:

 $phone = $_POST['phone'];
$name = $_POST['name'];
$loc = $_POST['loc'];
$session = $_POST['session'];

include('config.php');


$sql = $mysqli->query("SELECT * FROM appt WHERE phone = $phone AND bywho = 2 OR phone = $phone AND verified = 1 ORDER BY aid DESC LIMIT 1");

if ($sql) {
    $row = $sql->fetch_assoc();
    if ($row) {
        $namecheck = $row['name'];

    } else {

    }
} else {

    echo "Error: " . $mysqli->error;
}

请注意以下事项:

  1. 我使用 $mysqli->query() 来执行 SQL 查询。这假设你 已使用 MySQLi 建立了与数据库的连接,并且 将其存储在 $mysqli 中。
  2. 我使用 fetch_assoc() 来获取结果的关联数组 行。
  3. 始终谨慎地将变量直接插入 SQL 查询。考虑使用准备好的语句来防止 SQL 注入 漏洞。
© www.soinside.com 2019 - 2024. All rights reserved.