我正在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变量来自表单。
答案 0 :(得分:2)
首先,您正在使用带有POST变量的GET方法edit_banned_ip.php?id=1
而您尚未定义id
的变量,仅在您的bind_param
中,这还不够
我建议你不要这样做。
您最好在$id=$_REQUEST['id'];
$reason = $_POST['reason'];
答案 1 :(得分:0)