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

PHP MySQL INSERT 插入失敗排查指南

     編輯:程式設計綜合問答

問題代碼片段

$sql = "INSERT INTO `yhy100`(`id`,`title`,`dates`,`contents`) VALUES (NULL,'$title',NOW(),'$con')";
mysql_query($sql);
if (mysql_query($sql)) { echo "插入成功"; } else { echo "插入失敗"; }

主要錯誤

  1. 重複執行:mysql_query($sql) 執行兩次,第一次插入,第二次因主鍵衝突或語法失敗返回 false。
  2. 無錯誤輸出:未打印 mysql_error(),無法定位具體原因。
  3. SQL 注入風險:直接拼接變量,應用 mysql_real_escape_string 或改用 PDO/Prepared Statements。
  4. 編碼不一致:資料表/連接字符集需統一(utf8mb4 推薦)。

修正代碼

$link = mysql_connect("localhost:3306","root","123456") or die("連接失敗: ".mysql_error());
mysql_select_db("yhy") or die("選庫失敗: ".mysql_error());
mysql_set_charset("utf8mb4");

$title = mysql_real_escape_string($_POST['title']);
$con   = mysql_real_escape_string($_POST['con']);

$sql = "INSERT INTO `yhy100`(`title`,`dates`,`contents`) VALUES ('$title',NOW(),'$con')";
if (mysql_query($sql)) {
    echo "插入成功,ID: ".mysql_insert_id();
} else {
    echo "插入失敗: ".mysql_error(); // 關鍵:輸出具體錯誤
}

進階建議

  • 棄用 mysql_*:PHP 7+ 已移除,改用 PDO 或 mysqli。
  • 使用預處理語句防注入:
    $stmt = $pdo->prepare("INSERT INTO yhy100(title,contents) VALUES(?,?)");
    $stmt->execute([$title, $con]);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved