我查看了我的查询语句。当我在MYSQL中运行“DELETE FROM users WHERE id =(Some Int)”时,它成功执行,一切似乎都没问题。但是,当我尝试执行同样的命令时,我在MYSQL中遇到语法错误。
include 'db_connect.php'; // connects to db
$action = isset($_GET['action']) ? $_GET['action'] : "";
if($action=='delete'){ //if the user clicked ok, run our delete query
$query = "DELETE FROM users WHERE id = ".$mysqli->real_escape_string($_GET['id'])."";
//execute query
if( $mysqli->query($query) ){
//if successful deletion
echo "User was deleted.";
}else{
//if there's a database problem
echo "Database Error: Unable to delete record.";
$disp = mysqli_error($mysqli);
print($disp);
}
编辑1: 当我打印$ query时,我得到:“DELETE FROM users WHERE id =”。 id是空白的。
我尝试将$ query更改为以下内容:
$query = "DELETE FROM users WHERE id = ".$mysqli->real_escape_string($_GET['id']);// prints nothing
$query = "DELETE FROM users WHERE id = ".$mysqli->$_GET['id'];// prints nothing
$query = "DELETE FROM users WHERE id = ".$mysqli->$id;// prints nothing
我仍然不明白为什么我不能在这里使用$ id。 我调用一个使用id的javascript函数,它工作正常......我得到一个弹出窗口,其中印有正确的id。
echo "<a href='#' onclick='delete_user( {$id} );'>Delete</a>";
function delete_user( id ){
var answer = confirm('Are you sure?'+id);
if ( answer ){ //if user clicked ok
window.location = 'delete.php?action=delete&id=' + id;
}
}
答案 0 :(得分:1)
尝试$_GET['amp;id']
或$_REQUEST['amp;id'];
输出var_dump
var_dump($_REQUEST);
它返回输出,如:
array(2) { ["action"]=> string(6) "delete" ["amp;id"]=> string(2) "39" }
请参阅表单字段名称id
不是amp;id
。因此,请检查表单字段名称一次。
注意:强>
$ _ REQUEST一个关联数组,默认包含$ _GET的内容, $ _POST和$ _COOKIE
然后查询成为
$query = "DELETE FROM users WHERE id = ".$mysqli->real_escape_string($_REQUEST['amp;id']);
答案 1 :(得分:0)
更好的方法是在var中获取id和位置以检查它是否为null。
示例$id = ($_get['id']);
然后在sql查询$id
WHERE id = '$id'
有些时候查询不允许你输入整个系统代码。做很长的路,确保你的第一步工作,并在你在mysql中查询之前得到你想要的数据
答案 2 :(得分:-2)
您是否从$mysqli->real_escape_string($_GET['id'])
收到了正确的ID和数据类型值?
检查数据库中的数据类型。这也可能是数据类型错误。