更新mysql行无法正常工作

时间:2014-10-30 07:21:05

标签: php 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>";
   }
}

?>

我在这里做错了什么?

帮助。

3 个答案:

答案 0 :(得分: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 :(得分:0)

请更改

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

要:

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

因为没有设置name属性,控件不会出现这种情况。

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

希望它适合你。

答案 2 :(得分:0)

更改submit input

中的form

来自这个

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

到这个

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

mysqli不会自动保护您的查询。绑定你的价值。 通过在顶部

使用此行,始终保留生产时的错误报告
error_reporting(E_ALL);