Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新查询无法正常工作_Php_Mysql_Sql - Fatal编程技术网

Php 更新查询无法正常工作

Php 更新查询无法正常工作,php,mysql,sql,Php,Mysql,Sql,我正在用PHP和MySQL制作一个简单的IP禁止脚本,我正在创建编辑禁止页面,在那里他们可以修改原因和IP地址。我已经创建了一个更新查询,它将更新数据库中的记录。我有一个收集id的get请求,如下所示: edit\u banked\u ip.php?id=1 然后,我使用select语句收集信息并设置变量$id,然后在下面的更新查询中使用该变量: 这是我的疑问: <?php if ($_POST) { if ($_POST['ip'] != '' && $_POST[

我正在用PHP和MySQL制作一个简单的IP禁止脚本,我正在创建编辑禁止页面,在那里他们可以修改原因和IP地址。我已经创建了一个更新查询,它将更新数据库中的记录。我有一个收集id的get请求,如下所示:

edit\u banked\u ip.php?id=1

然后,我使用select语句收集信息并设置变量
$id
,然后在下面的更新查询中使用该变量:

这是我的疑问:

<?php

if ($_POST) {
  if ($_POST['ip'] != '' && $_POST['reason'] != '') {
    $ip = $_POST['ip'];
    $reason = $_POST['reason'];

    // run update query
    $update = $db->prepare("UPDATE `banned_ips` SET `ip` = ?, `reason` = ? WHERE `id` = ?");
    $update->bind_param('ssi', $ip, $reason, $id);

    if ($update->execute()) {
      if ($update->affected_rows > 0) {
      $_SESSION['update_success'] = 'Success';
      }
    }
  }
}

 ?>

这就是我获取
$id
变量的方式,两个$u POST变量来自表单。

URI上定义的变量是get变量

-您可以使用$\u GET['id'访问它


查询在我看来很好首先,您使用的是带有POST变量的GET方法
edit\u banked\u ip.php?id=1
,您还没有为
id
定义变量,只在
bind\u参数中定义,这还不够


我建议你不要那样做


您最好添加
$id=$\u请求['id']在你的
$reason=$\u POST['reason']下

您是否检查了变量的值?您正在使用GET方法
edit\u banked\u ip.php?id=1
和POST variables.SQL文本看起来像是有效的语法;我们没有足够的信息来检查语义(表名、列名、权限、触发器等)。我们没有看到为
$id
变量分配任何值。对于调试,我建议您
echo$idbind_参数
之前执行code>。我建议您不要这样做。您最好添加
$id=$\u请求['id']在你的
$reason=$\u POST['reason']下你是用表格做的,对吗?@Fred ii-是的,它会给你35次代表,25次回答,10次投票:)
<?php
    if ($_GET) {
        if (isset($_GET['id'])) {
            $id = $_GET['id'];
    if ($stmt = $db->prepare("SELECT ip, reason FROM banned_ips WHERE id = ?")) {

   $stmt->bind_param("i", $id); 
   $stmt->execute(); 
   $stmt->bind_result($ip, $reason);

   while ($stmt->fetch()) {
    }
  }
?>