2017-06-13 64 views
0

我試圖將數據插入到一個在線數據庫MySql在線MySQL數據庫,我用這個查詢在幾個月前,現在它似乎沒有工作,插入查詢到不工作

我的表格:

$name = "Hilary"; 
$number = "768"; 
$orderss = "Rice x1"; 
$location = "Chilenje"; 

$con= mysqli_connect($host,$user,$pass,$db); 

$query= "insert into orders values('".$name."','".$number."','".$orderss."','".$location."');"; 

$result= mysqli_query($con,$query); 

if(!$result) 
{ 
    $response = array(); 
    $code= "reg_false"; 
    $message="Error Placing Order..."; 
    array_push($response,array("code"=>$code,"message"=>$message)); 
    echo json_encode(array("server_response"=>$response)); 

} 
else 
{ 
    $response = array(); 
    $code= "reg_true"; 
    $message="Order Successful,Please wait for our call..."; 
    array_push($response,array("code"=>$code,"message"=>$message)); 
    echo json_encode(array("server_response"=>$response)); 

} 

mysqli_close($con); 

?> 

當我運行這種形式我得到服務器響應的「錯誤下單」部分和值不inserted.Please幫我

+2

你是敞開的SQL注入。由於您使用的是mysqli,請利用[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[bind_param](http://php.net/手動/ EN/mysqli的-stmt.bind-param.php)。另外,在運行查詢時檢查錯誤消息。 – aynber

+0

嘗試[啓用例外](https://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli)以獲取更具體的錯誤。 – tadman

+0

你應該在這裏閱讀一些文檔https://www.w3schools.com/php/php_mysql_insert.asp –

回答

0

讓您$query很簡單的像這樣的,如果你插入的所有列你的表

$stmt = $conn->prepare("INSERT INTO orders VALUES (?, ?, ?, ?)"); 
$stmt->bind_param("siss", $name, $number, $orderss, $location); 

或者如果你插入到特定的列,您可以用您的實際列名

$stmt = $conn->prepare("INSERT INTO orders (column_name1, column_name2, column_name3, column_name4) VALUES (?, ?, ?, ?)"); 
$stmt->bind_param("siss", $name, $number, $orderss, $location); 

或者我還修改當前的代碼,這樣你可以在你結束一個測試替換column_name*使用還有一點"siss"的論據是4種不同類型i - integer, d - double, s - string, b - BLOB

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

$name = "Hilary"; 
$number = "768"; 
$orderss = "Rice x1"; 
$location = "Chilenje"; 

// Create connection 
$con = new mysqli($servername, $username, $password, $dbname); 

// Check connection 
if ($con->connect_error) { 
    die("Connection failed: " . $con->connect_error); 
} 

// prepare and bind 
$stmt = $conn->prepare("INSERT INTO orders VALUES (?, ?, ?, ?)"); 
$stmt->bind_param("siss", $name, $number, $orderss, $location); 

if($stmt->execute()) { 
$stmt->execute(); 
    $response = array(); 
    $code= "reg_true"; 
    $message="Order Successful,Please wait for our call..."; 
    array_push($response,array("code"=>$code,"message"=>$message)); 
    echo json_encode(array("server_response"=>$response)); 
} else { 

    $response = array(); 
    $code= "reg_false"; 
    $message="Error Placing Order..."; 
    array_push($response,array("code"=>$code,"message"=>$message)); 
    echo json_encode(array("server_response"=>$response)); 

} 
$stmt->close(); 
$con->close(); 
?> 
+2

保存OP煩惱和善意使用準備好的語句 – Akintunde007

+0

謝謝,這與嘗試在不同服務器上的組合顯示它不連接,輸入了錯誤的密碼,現在工作正常 –

+0

@Rtra可以喲請編輯您的答案以顯示可以使用預先準備的語句進行的相同操作? –