2016-11-22 135 views
-2

我的PHP文件提交一個條目到數據庫表不起作用,我不明白爲什麼。它接受Ajax提交,並且我知道問題不在數據或Ajax請求中,因爲它處理成功。唯一的問題是沒有數據提交給我的數據庫。在我更改爲代碼以將地址串連接到之前它是一個變量之前,我有這個工作。任何建議都會很棒!與php提交時出現sql錯誤

這裏是PHP文件 UPDATE :::這是更新的PHP文件

<?php 
require("dbinfo.php"); 

// Create connection 
$conn = new mysqli('localhost', $username, $password, $database); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$name = $_POST['user_name']; 
$street = $_POST['user_street']; 
$city = $_POST['user_city']; 
$state = $_POST['user_state']; 
$country = $_POST['user_country']; 
$zip = $_POST['user_zip']; 

$address = $street.', '.$city.', '.$state.', '.$country.', '.$zip; 
$shortAdd = $city.', '.$state.', '.$country; 

$type = $_POST['user_color']; 
$desc = $_POST['user_message']; 
$request_url = "http://maps.googleapis.com/maps/api/geocode/xml?address=".$address."&sensor=true"; 
$xml = simplexml_load_file($request_url) or die("url not loading"); 
$status = $xml->status; 
if ($status=="OK") { 
     $lat = $xml->result->geometry->location->lat; 
     $lon = $xml->result->geometry->location->lng; 
} 
$sql = "INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`, `desc`) 
    VALUES (?, ?, ?, ?, ?, ?);"; 

$stmt = $conn->prepare($sql); 
$stmt->bind_param('ssssss', $name, $shortAdd, $lat, $lon, $type, $desc); 
$stmt->execute(); 
$conn->close(); 
?> 
+0

你可以告訴我們的錯誤,如果有的話? – Ronald

+0

沒有錯誤?它會經過並且按鈕被單擊時提交表單,但mySQL數據庫之後沒有新表。 –

+1

您是否執行了SQL語句?我注意到沒有提交或$ sql-> query() – Ronald

回答

1

雖然docliving的答案是正確的,採取額外的步驟和使用準備好的語句。沒有它,您的代碼很容易受到SQL注入攻擊。只需稍作更改即可將其轉換爲使用準備好的語句。這裏是如何做到這一點與mysqli:

$sql = "INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`, `desc`) 
    VALUES (?, ?, ?, ?, ?, ?);"; 

$stmt = $conn->prepare($sql); 
$stmt->bind_param('ssssss', $name, $shortAdd, $lat, $lon, $type, $desc); 
$stmt->execute(); 
+0

之後似乎仍然沒有工作。 –

+0

@CollinMcCabe我認爲你有另一個問題,如果它不工作與docliving的代碼。礦山應該以同樣的方式工作。 –

+0

僅供參考,此網站爲globalcandlelight.com,當您點擊蠟燭時,表格會顯示出來。它似乎工作,但沒有新的標記後來出現。從數據庫中拉出的標記正在工作 –

1

當@MySelfBoy寫道:

任務後,你必須執行SQL語句

他意味着你必須執行你的查詢

$sql = "INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`, `desc`) 
    VALUES ('$name', '$shortAdd', '$lat', '$lon', '$type', '$desc');"; 

下面的指令:

$conn->query($sql); 

注:我仍然不容作出評論,所以我在這裏張貼。

+0

在我添加了 –