Php 我的代码mysql、PDO prepare delete语句有什么问题?
为什么我的代码不起作用。救命啊,我看没什么错。如果我使用user\u id=$current\u user而不是user\u id=:current\u id,它就可以工作。但出于安全考虑,我需要做好准备。请帮忙Php 我的代码mysql、PDO prepare delete语句有什么问题?,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,为什么我的代码不起作用。救命啊,我看没什么错。如果我使用user\u id=$current\u user而不是user\u id=:current\u id,它就可以工作。但出于安全考虑,我需要做好准备。请帮忙 <?php $hostname = 'localhost'; $username = '**'; $password = '**'; $dbname = '**'; try { $db = new PDO("mysql:host=$hostname;dbname=$dbn
<?php
$hostname = 'localhost';
$username = '**';
$password = '**';
$dbname = '**';
try {
$db = new PDO("mysql:host=$hostname;dbname=$dbname", "$username" ,"$password" ,
array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (PDOException $e) {
echo" There was an error with the connection";
}
$current_user=$_POST['users_id'];//get user id
include 'db_tag.php';
$stmt=$db->prepare("DELETE FROM object_sign WHERE user_id=:current_id");
$stmt->bindParam(":current_id",$current_user,PDO::PARAM_INT);
$stmt->execute();
?>
@conan,使用下面我提到的代码&你需要用这些代码检查下面的几点 1)打印$current\u用户id以确保id是否正确显示,并且我已经设置了条件,如果post包含用户id,则只执行查询 2)我设置了异常,所以您可以通过异常消息检查错误
<?php
include 'db_tag.php';
$hostname = 'localhost';
$username = '**';
$password = '**';
$dbname = '**';
try {
$db = new PDO("mysql:host=$hostname;dbname=$dbname", "$username" ,"$password" ,
array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
if(isset($_POST['users_id'])) {
$current_user=$_POST['users_id'];//get user id
$stmt=$db->prepare("DELETE FROM object_sign WHERE user_id=:user_id");
$stmt->bindParam(":user_id",$current_user);
$stmt->execute();
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
当前用户是整数还是字符串。如果字符串为PDO::PARAM_STR,请尝试使用PDO::PARAM_INT
$stmt->bindParam(":current_id",$current_user,PDO::PARAM_STR);
$stmt->execute();
如果仍然不起作用,试试这个
//$stmt->bindParam(":current_id",$current_user,PDO::PARAM_STR);
$stmt->execute(array(:current_id"=>$current_user));
你得到了什么错误?在firebug中,它说NetworkError:500内部服务器错误在响应中检查/预览错误尝试从PDO中删除
PDO::ATTR\u EMULATE\u PREPARES=>false
constructor@conan,您可以查看我的答案并让我知道您的反馈,以便我可以帮助您解决问题。在我使用您的异常消息后,错误:SQLSTATE[HY093]:无效参数编号:未定义参数,但$current_user=$\u POST['users_id'];没问题,我测试了echo$当前用户,很好。那么为什么在我的例子中没有定义参数呢。嗯,我的表包含多个相同的用户id,这会导致问题吗?但是如果我使用user\u id=$current\u user,那么我就可以删除它。那么,在我的情况下,我做错了什么?@conan,我已经编辑了我的答案并更改了参数,所以现在请再次检查上面的代码,如果还有任何问题,请告诉我。非常感谢!这是名字,名字必须匹配。用户id必须匹配:用户id非常感谢!你的第二条路也行。您的第一个方法是,PHP Weblineindia解决问题,我需要的名称与我需要绑定的名称匹配。所以user\u id必须匹配:user\u id,不能是:current\u id,谢谢您的时间。