2014-10-30 126 views
-1

我試圖更新mysql表中的列值,但沒有任何事情發生。更新mysql行不工作

它既不顯示更新消息也不顯示錯誤消息。

HTML表單:

<html> 
    <form action='xyz.php' method='post'> 
     <input type='text' size='25' id='country' name='country'> 
     <input type='submit' id='submit' value='update'> 
    </form> 
</html> 

PHP代碼:

<?php 

session_start(); 

$con=mysqli_connect("localhost","root","","server2go"); 

if(mysqli_connect_errno()) 

echo "<h2>Failed to connect to MySQL database!".mysqli_connect_errno(); 

if(isset($_POST['submit'])){ 


    $country=$_POST['country']; 

    $userid=987654326; 

    $sql2=mysqli_query($con, "UPDATE user_profile set country='$country' WHERE userid='$userid'"); 
    if(!$sql2){ 
     die(mysqli_error($con)); 
     echo "<h6>Failed to update</h6>"; 
    } 
    else { 
     echo "<h5>Successfully updated!</h5>"; 
    } 
} 

?> 

我做了什麼錯在這裏?

plz help。

+0

你收到任何錯誤訊息留在生產時的錯誤報告? – Jens 2014-10-30 07:24:02

回答

0

請更改

<input type='submit' id='submit' value='update'> 

要:

<input type='submit' id='submit' value='update' name='submit'/> 

因爲,沒有name屬性設置和控制是不會這個條件。

if(isset($_POST['submit'])){

希望它爲你工作。

4

爲什麼你的代碼是不執行的原因,是你自己設定的條件語句

if(isset($_POST['submit'])){...} 

但未命名提交按鈕:

<input type='submit' id='submit' value='update'> 

重命名到:

<input type='submit' id='submit' value='update' name='submit'> 

當涉及到POST變量時,您不能單獨依賴id


腳註:


爲了保護自己免受SQL注入攻擊,而使用你現在有什麼,直到你希望移動到準備好的語句,使用:

$userid = (int)987654326; // assuming it's an integer 

$country = stripslashes($_POST['country']); 
$country = mysqli_real_escape_string($con,$_POST['country']); 
+1

+用於指出準備好的語句的cookie點 – Ghost 2014-10-30 07:29:16

+0

@Ghost Thanks Ghost;) – 2014-10-30 07:29:46

+0

只是在討論中拋出一些東西:它不是腳本所關心的提交按鈕,而是'country'字段中的數據;因此我通常檢查有效載荷字段而不是一些多餘的按鈕相關字段;-) – VolkerK 2014-10-30 08:00:12

0

改變你submit inputform

from this

<input type='submit' id='submit' value='update'> 

這個

<input type='submit' id='submit' name='submit' value='update'> 

mysqli不會自動保護您的查詢。綁定你的價值。 總是用這條線在頂部

error_reporting(E_ALL);