MySQL/PHP代码拒绝访问数据库表


Access denied to database table for MySQL/PHP code

我是PHP和MySQL的新手,但不是一般的编码。我正在尝试将Access数据库迁移到MySQL。

在提交表单信息并尝试向表中添加记录后,我得到以下错误:

用户'@'localhost'访问数据库'FltLogbook'被拒绝

为了构建表单,我访问数据库以为下拉菜单提取某些值。所有这些都很好。点击"添加条目"按钮并使用Post方法后,出现上述错误。

我很困惑,因为以前的查询运行得很好,但是一旦我尝试"添加"记录,我得到错误。上面的错误似乎是一个匿名连接。顺便说一句,我连接的用户名拥有数据库的所有权限。我试过在代码的表单构建部分内添加该用户名的记录,并且成功了。您将在下面的代码中看到,我已经注释掉了实际的插入代码。我正在对数据类型进行故障排除,并试图简化插入命令,以消除导致错误的其他字段。当前的插入命令代码在代码的表单构建部分工作得很好,所以我知道我有正确的代码,现在我只是要解决连接问题。

在这个网站和谷歌上搜索之后,大多数对上述错误的回应通常涉及授予用户权限。我不认为这是这里的问题,因为我可以在代码的表单构建部分添加记录。似乎我从一个经过身份验证的用户到匿名,因为没有用户名没有在错误中传递。我在代码的两个部分都使用了connection_status(),它返回0 (Normal)。

任何帮助都是非常感激的。欢呼,注意

代码:

$conn = mysqli_connect("localhost", $_POST[user], $_POST[password], "FltLogbook");
if ($_POST[op] != "add") {
    //Form not shown, show it
    $display="<h1>Add Logbook Entry</h1>";
    $CnxSt = connection_status();
    $display .= "Connection Status: $CnxSt<br><br>";
    $display .= "
    <form method='"post'" action='"$_SERVER[PHP_SELF]'">
    <strong>Details:</strong>
    <table border='"1'" width='"520'">
    <tr>
    <td><input type='"checkbox'" name='"Sim'">Simulator</td>
    <td colspan='"2'">SimType: <select name='"SimType'">
    <option value='"'">  NA </option>
    <option value='"Miltary Visual'"> Military Visual </option>
    <option value='"Military Non-Visual'"> Military Non-Visual </option>
    <option value='"ATD'"> ATD </option>
    <option value='"FTD'"> FTD </option>
    <option value='"FFS'"> FFS </option></select></td>
   </tr>
   <tr>
    <td>Date: <input type='"date'" name='"FltDate'"></td>
    <td>Aircraft: <select name='"Aircraft'">
    <option selected='"selected'" value='"26'">C-172M</option>";
      $AcftQuery="SELECT Aircraft.AirKey,Aircraft.Aircraft, Aircraft.ME, Aircraft.Complex, Aircraft.HighPerf 
                  FROM Aircraft";
      $AcftResult=mysqli_query($conn, $AcftQuery) or die ("Aircraft Query Failed");
      While ($AcftRow=mysqli_fetch_array($AcftResult)) {
        $AcftKey=$AcftRow['AirKey'];
        $AcftAircraft=$AcftRow['Aircraft'];
        $AcftME=$AcftRow['ME'];
        $AcftComplex=$AcftRow['Complex'];
        $AcftHP=$AcftRow['HighPerf'];
        $display .= "<option value='"$AcftKey'"> $AcftAircraft </option>";
      }
    $display .= "
    </select>
    </td>
    <td>Aircraft ID: <input type='"text'" name='"ID'" size='"8'"></td>
    </tr>
    <tr>
    <td>From: <select name='"From'">
    <option selected='"selected'" value='"PVG'">PVG</option>";
      $ArfldQuery="SELECT AirfieldID FROM Airfields ORDER BY AirfieldID";
      $ArfldResult=mysqli_query($conn, $ArfldQuery) or die ("Airfield Query Failed");
      While ($ArfldRow=mysqli_fetch_array($ArfldResult)) {
        $Arfld=$ArfldRow['AirfieldID'];
        $display .= "<option value='"$Arfld'"> $Arfld </option>";
      }
    $display .= "
    </select>
    </td>
    <td>To: <select name='"To'">
    <option selected='"selected'" value='"PVG'">PVG</option>";
      $ArfldQuery="SELECT AirfieldID FROM Airfields ORDER BY AirfieldID";
      $ArfldResult=mysqli_query($conn, $ArfldQuery) or die ("Airfield Query Failed");
      While ($ArfldRow=mysqli_fetch_array($ArfldResult)) {
        $Arfld=$ArfldRow['AirfieldID'];
        $display .= "<option value='"$Arfld'"> $Arfld </option>";
      }
    $display .= "
    </select>
    </td>
    <td>Leg: <select name='"Leg'">
      <option value='"1'">1</option>
      <option value='"2'">2</option>
      <option value='"3'">3</option>
      <option value='"4'">4</option>
      <option value='"5'">5</option>
      <option value='"6'">6</option>
      </select>
    </td>
    </tr>
    </table><br>
    <strong>Flight Time Info:</strong>
    <table border='"1'" width='"520'">
    <tr>
    <td>TPT: <input type='"text'" name='"TPT'" size='"4'"></td>
    <td>PIC: <input type='"text'" name='"PIC'" size='"4'"></td>
    <td>SIC: <input type='"text'" name='"SIC'" value='"0.0'" size='"4'"></td>
    </tr>
    <tr>
    <td>Solo: <input type='"text'" name='"Solo'" value='"0.0'" size='"4'"></td>
    <td colspan='"2'">Dual Received: <input type='"text'" name='"Dual'" value='"0.0'" size='"4'"></td>
    </tr>
    <tr>
    <td>Cross Country: <input type='"text'" name='"XC'" value='"0.0'" size='"4'"></td>
    <td><input type='"checkbox'" name='"FARXCntry'" size='"4'">FAR X-Cntry</td>
    <td><input type='"checkbox'" name='"ATPXCntry'" size='"4'">ATP X-Cntry</td>
    </tr>
    <tr>
    <td>Single Engine: <input type='"text'" name='"SE'" size='"4'"></td>
    <td>Multiengine: <input type='"text'" name='"ME'" size='"4'"></td>
    <td>Night: <input type='"text'" name='"NT'" value='"0.0'" size='"4'"></td>
    </tr>
    <tr>
    <td>Complex: <input type='"text'" name='"Complex'" value='"0.0'" size='"4'"></td>
    <td colspan='"2'">High Performance: <input type='"text'" name='"HP'" value='"0.0'" size='"4'"></td>
    </tr>
    <tr>
    <td>Instrument: <input type='"text'" name='"Inst'" value='"0.0'" size='"4'"></td>
    <td colspan='"2'">Sim Instrument: <input type='"text'" name='"SimInst'" value='"0.0'" size='"4'"></td>
    </tr>
    <tr>
    <td>Instructor: <input type='"text'" name='"Instructor'" value='"0.0'" size='"4'"></td>
    <td>Pre-Post: <input type='"text'" name='"PrePost'" value='"0.0'" size='"4'"></td>
    <td>Ground: <input type='"text'" name='"Ground'" value='"0.0'" size='"4'"></td>
    </tr>
    </table><br>
    <strong>Actual Approaches:</strong>
    <table border='"1'" width='"520'">
    <tr>
    <td>Precision: <input type='"text'" name='"PrecAct'" value='"0'" size='"3'"></td>
    <td>Non-Precision: <input type='"text'" name='"NonPrecAct'" value='"0'" size='"3'"></td>
    </tr>
    </table><br>
    <strong>Simulated Approaches:</strong>
    <table border='"1'" width='"520'">
    <tr>
    <td>Precision: <input type='"text'" name='"PrecSim'" value='"0'" size='"3'"></td>
    <td>Non-Precision: <input type='"text'" name='"NonPrecSim'" value='"0'" size='"3'"></td>
    </tr>
    </table><br>
    <strong>Landings:</strong>
    <table border='"1'" width='"520'">
    <tr>
    <td>Day Landings: <input type='"text'" name='"DayLdg'" size='"3'"></td>
    <td>Night Landings: <input type='"text'" name='"NtLdg'" size='"3'"></td>
    </tr>
    </table><br>
    <strong>Remarks:</strong><br>
    <textarea name='"Remarks'" rows='"5'" cols='"70'"></textarea>
    <input type='"hidden'" name='"op'" value='"add'">
    <p><input type='"submit'" name='"submit'" value='"Add Entry'"></p>
    </FORM>";
} else if ($_POST[op] == "add") {
if ($_POST[Sim] == "") {
    $_POST[Sim] = "0";
} else {
    $_POST[Sim] = "1";
}
if ($_POST[FARXCntry] == "") {
    $_POST[FARXCntry] = "0";
} else {
    $_POST[FARXCntry] = "1";
}
if ($_POST[ATPXCntry] == "") {
    $_POST[ATPXCntry] = "0";
} else {
    $_POST[ATPXCntry] = "1";
}
//  $add_flt = "INSERT INTO FlightData (Date, MakeModel, AircraftID, Simulator, SimType, AfldFrom, AfldTo,
//              Leg, TPT, PIC, SIC, Solo, Dual, Night, XCntry, SE, ME, Complex, HighPerf, Inst_Act, Inst_Sim,
//              Instructor, PrePost, Ground, Prec_Act, Prec_Sim, NonPrec_Act, NonPrec_Sim, DCL, NCL, 
//              FAR_XCntry, ATP_XCntry, Remarks)
//              VALUES ('$_POST[FltDate]', '$_POST[Aircraft]', '$_POST[ID],$_POST[Sim]', '$_POST[SimType]', '$_POST[From]',
//                      '$_POST[To]', '$_POST[Leg]', '$_POST[TPT]', '$_POST[PIC]', '$_POST[SIC]', '$_POST[Solo]', '$_POST[Dual]',
//                      '$_POST[NT]', '$_POST[XC]', '$_POST[SE]', '$_POST[ME]', '$_POST[Complex]', '$_POST[HP]', '$_POST[Inst]',
//                      '$_POST[SimInst]', '$_POST[Instructor]', '$_POST[PrePost]', '$_POST[Ground]', '$_POST[PrecAct]',
//                      '$_POST[PrecSim]', '$_POST[NonPrecAct]', '$_POST[NonPreSim]', '$_POST[DayLdg]', '$_POST[NtLdg]',
//                      '$_POST[FARXCntry]', '$_POST[ATPXCntry]', '$_POST[Remarks]')";
$add_flt = "INSERT INTO FlightData (Date, MakeModel) VALUES ('$_POST[FltDate]', '$_POST[Aircraft]')";
mysqli_query($conn, $add_flt) or die('Error: '. mysqli_connect_error());
$display = "<h1>Entry Added</h1>
<p>Your entry was added.</p><br>
<p>$_POST[FltDate] | $_POST[Aircraft] </p>";
//  $CnxSt = connection_status();
//  $display .= "Connection Status: $CnxSt<br><br>";
//  $display .= "$user / $pwd<br>$add_flt<br>"; 
//  $display .= "$_POST[FltDate] / $_POST[Aircraft] / $_POST[ID] / $_POST[Sim] / $_POST[FARXCntry] / $_POST[ATPXCntry]";
}
?>
<html>
<head>
<title>Add Logbook Entry></title>
</head>
<body>
<?php echo $display; ?>
</body>
</html>

你必须在第一行检查你的mysql用户名和密码

如果username="root" &密码为空,则

$康涅狄格州= mysqli_connect("localhost","根",","FltLogbook");