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