mysql行的更新不起作用


Update on a mysql row not working

我正在尝试更新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>";
   }
}
?>

我做错了什么?

请帮忙。

您的代码没有执行的原因是您设置了一个条件语句

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

但没有命名您的提交按钮:

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

重命名为:

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

当涉及POST变量时,不能仅依赖id


脚注:

  • 您当前的代码对SQL注入是开放的
    使用准备好的语句,或将PDO与准备好的报表一起使用

为了帮助保护自己免受SQL注入攻击,同时使用您现在拥有的内容,直到您希望转移到准备好的语句,请使用:

$userid = (int)987654326; // assuming it's an integer
$country = stripslashes($_POST['country']);
$country = mysqli_real_escape_string($con,$_POST['country']);

请更改

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

收件人:

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

因为,没有设置name属性,并且控制不会达到此条件。

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

希望它对你有用。

form 中更改您的submit input

从这个

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

到这个

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

mysqli不会自动保护您的查询。绑定您的价值。总是在生产时使用顶部的这条线留下错误报告

error_reporting(E_ALL);