我已经查看了我的查询语句。当我在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;
}
}
try $_GET['amp;id']
or $_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']);
更好的方法是获取id并放置在var中以检查其是否为空。示例$id = ($_get['id']);
则在sql查询WHERE id = '$id'
$id
有些时间查询不允许你输入整个系统代码。在mysql
您是否收到$mysqli->real_escape_string($_GET['id'])
的ID和数据类型的正确值?
检查数据库中的数据类型。这也可能是数据类型错误