【问题标题】:mysql update from form errormysql 从表单错误更新
【发布时间】:2018-05-10 15:34:13
【问题描述】:

数据库不会更新。问题是什么?我尝试了很多方法,都失败了。我阅读了 mysqli 字典,代码应该可以工作,但事实并非如此。

这是edit.php

<?php require_once 'header.php' ?>
<?php 
	$id = $_GET['id'];
?>
<div class="container">
	
 <form method="post" <?php echo "action='edit_resultu.php?id=".$id."'"; ?>>

	<input type="text" name="track" class="form-control" placeholder="Enter track" maxlength="70"/>
	<button type="submit" class="btn btn-block btn-primary" name="update">Submit</button>
 </form>
</div>
</body>
</html>

这是edit_resultu.php

<?php

if(isset($_POST['update']))
{
$id = $_GET['id'];
$track = $_POST['track'];

$query = "UPDATE `db71038521`.`packs` SET track = `$track` WHERE `packs`.`id` = '$id'";

if(!mysqli_query($conn, $query))
{
  die('Could not update data: ' . mysqli_error($query));
}
echo "Updated data successfully\n";

}


?>
</body>
</html>

【问题讨论】:

  • 危险:此代码是vulnerable to XSS 用户输入需要转义才能插入到 HTML 文档中!。
  • 危险:你很容易受到SQL injection attacks的影响,你需要自己从defend那里得到。
  • 此代码应生成错误警告:mysqli_query() 期望参数 1 为 mysqli,给定 null。可以?您是否确保 PHP 已配置为向您显示错误?
  • @MasivuyeCokile — 使用带有method="post" 的表单不会阻止您将数据放入查询字符串并在$_GET 中读取。
  • @Quentin 我没有说它,它只是一个坏主意,你也知道这一点

标签: php mysql mysqli


【解决方案1】:
mysqli_query($conn, $query)

您正在将变量 $conn 传递给 mysqli_query……但您从未为其赋值。

您需要调用mysqli_connect建立与数据库的连接,然后才能查询它。

mysqli_error($query)

mysqli_error的重点是问数据库服务器出了什么问题,而不是分析一串SQL。

您需要传递连接(如上),而不是查询。

【讨论】:

  • 在dbconfig.php文件中赋值。
  • 它可以从数据库中选择数据并将其删除。但不更新...
  • @antuanjoh — 您的问题中没有提到该文件。您没有在问题中显示该文件的内容。您没有在问题中引用它的 include 声明。 错误信息显示$conn 的值为null。
  • @antuanjoh — 因此,您的问题的原因大概是“您忘记在 edit_resultu.php 中包含该文件”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2013-03-12
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多