一個典型的「插入失敗」案例,揭示了 SQL 拼接、數據類型匹配、錯誤排查的核心教訓。
$ostype = $_POST['ostype'];
$uuid = $_POST['uuid'];
$nowtime = time(); // 時間戳
// ...
$result = mysql_query("INSERT INTO t_dblocal_userinformation (ID, OSTYPE, UUID, LASTDATE) VALUES (NULL, $ostype, $uuid, $nowtime)");
$ostype、$uuid 未加引號,導致 SQL 語法錯誤。VALUES (NULL, '$ostype', '$uuid', ...)time() 返回整數時間戳,但表字段 LASTDATE 為 DATE 或 DATETIME 類型。$nowtime = date('Y-m-d'); 或 date('Y-m-d H:i:s')。$pdo = new PDO("mysql:host=localhost;dbname=xxx", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo->prepare("INSERT INTO t_dblocal_userinformation (OSTYPE, UUID, LASTDATE) VALUES (?, ?, ?)");
$stmt->execute([$ostype, $uuid, date('Y-m-d H:i:s')]);
echo json_encode(['code' => 1000, 'message' => '插入成功']);
核心教訓:永遠不要直接拼接變量進 SQL;永遠使用預處理語句;永遠檢查數據庫字段類型與輸入值類型一致性。