2014-10-30 84 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);