2016-08-23 57 views
-2

此代碼是爲了檢查提交的表單值,並更新表,但是 它只是取代了場空PHP MYSQL更新stament不工作

在那裏出了錯任何想法,請?

<form action = "update.php" method = "POST"> 
    <p> 
     New Name: <input type "text" name="name"> 
     <input type= "submit"> 
    </p> 
</form> 
<?php 

require ('/var/www/html/site1/connect_db.php'); 
if(!empty($_POST['name']) && !is_numeric($_POST['name'])) 
{ 
    $name=$_POST['name']; 
    $name=mysqli_real_escape_string($dbc,$query); 
    $name=strip_tags($name); 


    #$query='update customers SET customerName = '".$name."' where customerNumber=114'; 
    $query = "update customers ". "SET customerName = $name"."where customerNumber=114" ; 
    mysqli_query($dbc,$query); 
} 
else 
{ 
    echo $name; 
} 

$query = 'select * from customers where customerNumber=103'; 
$result = mysqli_query($dbc,$query); 

while ($row=mysqli_fetch_array($result, MYSQLI_NUM)) 
{ 
    echo"<p>Name : $row[1]</p>"; 
} 
mysqli_close($dbc); 

?> 
+2

如果你迴應第一個'$ query',你會發現'WHERE'子句之前沒有空格。這和你的'$ name'需要用單引號包裝,因爲它是一個字符串。您還應該考慮使用預準備語句,您可以廣泛開放SQL注入。? – Qirel

+0

或者只是使用準備好的語句。 –

+1

爲什麼要分割字符串並將它連接在一起? – Barmar

回答

0

要更新的客戶號碼114,但選擇103時,其名稱可能爲空。

你的更新語句需要有大約如下的$名稱位報價:

$query = "UPDATE customers SET customerName = '$name' WHERE customerNumber=114"; 

編輯:請參閱問題的評論的參數化查詢建議。

+0

不要太快恭喜,它正在被'strip_tags'弄傷。 – tadman

+0

好點,做得很好。 – jedifans

+0

我已經選擇了114,儘管那不會對正在更新的東西沒有影響,並且嘗試了所有這些場景,但沒有結果:( – Matrix1977