更新查询无法正常工作

时间:2014-05-06 18:01:18

标签: php mysql sql

我正在PHP和MySQL中创建一个简单的IP禁止脚本,我正处于创建编辑禁令页面的阶段,他们可以在其中修改原因和IP地址。我创建了一个更新查询,它将更新数据库中的该记录。我有一个get请求来收集id如下:

edit_banned_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';
      }
    }
  }
}

 ?>

我真的很疑惑我做错了什么,所以如果有人能看到这个查询的问题那么这将成为我的一天。

我遇到的问题是查询确实执行但是没有行受到影响且记录没有更新。

编辑:

感谢那些已经回答的人,我回复了$ip变量,这是正确的。

在上面的查询下面我有这个代码(抓取数据):

<?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()) {
    }
  }
?>

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

2 个答案:

答案 0 :(得分:2)

首先,您正在使用带有POST变量的GET方法edit_banned_ip.php?id=1而您尚未定义id的变量,仅在您的bind_param中,这还不够

我建议你不要这样做。

您最好在$id=$_REQUEST['id'];

下添加$reason = $_POST['reason'];

答案 1 :(得分:0)

在URI上定义的变量是GET变量。

http://somewebsites.com?id=1 - 您可以使用$ _GET [&#39; id&#39;]

访问它

查询对我来说很好看