-1
我有一個Web服務器正在收集來自日誌收集服務器的傳入HTTP POST消息。我試圖用php腳本收集傳入的發佈數據,然後將其下載到mysql中。我對PHP和MySQL都有有限的經驗。HTTP POST數據到PHP和MySQL
這是我一直在努力的劇本,但我似乎無法得到它的工作:
<?php
ob_start();
print_r($_REQUEST);
$data = ob_get_contents();
ob_end_clean();
$mysqli = new mysqli("localhost", "root", "XXXX", "XXXX");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
mysqli_query("INSERT INTO `XXXX` VALUES ('$data')");
Print "Your information has been successfully added to the database.";
?>
我不知道我在哪裏失敗在這裏,並希望任何幫助!如果你想知道的話,我用XXXX替換了密碼到我的網絡服務器和數據庫名稱。
我能夠用這個腳本成功登錄到mysql,但似乎我使用PHP的POST數據收集工作不正確。
謝謝
嘗試打印出您的SQL語句以查看它是否有效。我的猜測是$數據不適合插入SQL插入中的值列表中。因爲使用ob_start();和ob_get_contents();將發佈數據轉換爲值列表是愚蠢的。 – developerwjk
使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值來實現此目的,因爲您將創建嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman