You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XAMPP环境下PHP操作MySQL遇权限拒绝错误求助

问题排查与修复方案

结合报错信息和你的代码,问题分以下几点逐一解决:

1. 数据库连接权限与mysql-fix.php冲突

报错显示调用mysql_connect时传入了密码root,但你代码里定义的$password="",这说明mysql-fix.php重写了mysql_connect函数,强制使用了错误的密码。

  • 修复:直接删除include_once('mysql-fix.php');这一行,XAMPP默认root用户密码为空,不需要该修复文件。
  • 额外提示:mysql_*系列函数已被PHP废弃,建议改用mysqli_*或PDO,避免后续兼容性问题。

2. 数据库变量拼写错误

你定义的数据库名变量是$db_nome="agency",但mysql_select_db里误用了$db_name,变量名不一致会导致数据库选择失败。

  • 修复:将mysql_select_db($db_name)改为mysql_select_db($db_nome)。

3. SQL语句多处错误

  • 表名错误:你创建的表是clients,但SQL里写的是clienti,需统一为clients。
  • 字段名错误:你的表没有Nclients字段,实际主键是code,SQL里的字段名要替换为code。
  • 语法错误:拼接SQL时未加空格,会生成UPDATE clientsSET code = ...这种非法语句,需在每个拼接段前加空格。
  • 修复后的SQL代码:
    $sql= "UPDATE clients ";
    $sql .= "SET code = $Nclients2 ";
    $sql .= "WHERE code = $Nclients";
    

4. 表单Action语法错误

表单action属性里的PHP代码缺少<和>,正确格式应为<?php echo $_SERVER['PHP_SELF']; ?>,否则表单提交地址无效。

  • 修复:修改表单行:
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    

5. 安全风险修复(重要)

直接将用户输入拼入SQL存在注入风险,哪怕本地环境也需规避。推荐改用mysqli预处理语句:

// 替换原有连接代码
$conn = mysqli_connect($host, $username, $password, $db_nome);
if (!$conn) {
    die('Unable to connect to server: ' . mysqli_connect_error());
}

// 替换原有SQL执行代码
if(isset($_POST["button"])) {
    $Nclients2 = $_POST["Nclients2"];
    $Nclients = $_POST["Nclients"];
    $stmt = $conn->prepare("UPDATE clients SET code = ? WHERE code = ?");
    $stmt->bind_param("ii", $Nclients2, $Nclients);
    if ($stmt->execute()) {
        $righe = $stmt->affected_rows;
        echo "Data updated successfully, affected rows: $righe";
    } else {
        echo "Error updating: " . $stmt->error;
    }
    $stmt->close();
    $conn->close();
}

完整修复后的代码示例

<!DOCTYPE html>
<html>
<head>
<title>Data manipulation</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<h1> Data to be modified </h1>
<p> Old customer code </p> <input type="text" name="Nclients">
<p> New customer code </p> <input type="text" name="Nclients2">
<input type="submit" name="button" value="SUBMIT">
</form>
<?php
$host="localhost";
$username="root";
$password="";
$db_nome="agency";
$tab_nome="clients";

$conn = mysqli_connect($host, $username, $password, $db_nome);
if (!$conn) {
    die('Unable to connect to server: ' . mysqli_connect_error());
}

if(isset($_POST["button"])) {
    $Nclients2 = $_POST["Nclients2"];
    $Nclients = $_POST["Nclients"];
    $stmt = $conn->prepare("UPDATE clients SET code = ? WHERE code = ?");
    $stmt->bind_param("ii", $Nclients2, $Nclients);
    if ($stmt->execute()) {
        $righe = $stmt->affected_rows;
        echo "Data updated successfully, affected rows: $righe";
    } else {
        echo "Error updating: " . $stmt->error;
    }
    $stmt->close();
    $conn->close();
}
?>
</body>
</html>

内容的提问来源于stack exchange,提问作者TitanFrex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:22:49