PHP MYSQL删除语法错误

时间:2015-09-17 01:59:16

标签: php mysql

我查看了我的查询语句。当我在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&amp;id=' + id;
    }
}

3 个答案:

答案 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和数据类型值?

检查数据库中的数据类型。这也可能是数据类型错误。