首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

PHP MySQL 插入失敗排查:SQL 語法與權限檢查

     編輯:程式設計綜合問答

問題代碼

$result = mysql_query('insert into anweisong(id,name) values('3','xxx');');

錯誤分析

  1. SQL 語法錯誤:字符串拼接導致單引號衝突。PHP 中單引號字符串內不能直接包含單引號,需轉義或雙引號包裹。
    正確寫法:
    $sql = "insert into anweisong(id,name) values('3','xxx');";
    或 $sql = 'insert into anweisong(id,name) values(\"3\",\"xxx\");';
  2. mysql_* 函數已棄用:PHP 5.5+ 棄用,7.0+ 移除。應改用 mysqli 或 PDO。
  3. 權限/連線問題:本地 DOS 能執行,腳本失敗可能是 Web 服務器用戶無資料庫權限、或 mysql_connect 參數錯誤(密碼為空?)。

修正版代碼

$link = mysqli_connect('localhost', 'root', '', 'an');
if (!$link) die('連接失敗: ' . mysqli_connect_error());

$sql = "INSERT INTO anweisong (id, name) VALUES ('3', 'xxx')";
if (mysqli_query($link, $sql)) {
    echo 'insert success!';
} else {
    echo 'fail: ' . mysqli_error($link);
}
mysqli_close($link);

最佳實踐

  • 使用 預處理語句 防注入:$stmt = $link->prepare("INSERT INTO ... VALUES (?, ?)");
  • 錯誤日誌記錄 mysqli_error()、mysqli_errno()。
  • 資料庫用戶最小權限原則(僅需 INSERT 權限)。

參考教程

W3School PHP MySQL 入門

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved