php - PDO 删除查询不起作用

标签 php mysql pdo

我有这段代码不想工作,我不明白为什么...

$DeleteT=$con->prepare("DELETE Examples FROM USERS WHERE Email=:Email AND Pass=:Pass");
$DeleteT->bindParam(':Pass', $Pass);
$DeleteT->bindParam(':Email', $Email);
$DeleteT->execute(array(
      ':Email' => $Email,
      ':Pass' => $Pass,
));

我已经尝试搜索删除查询的示例,但我仍然不明白为什么,我的值不想从数据库中删除,我还检查了表的名称和数据库匹配,他们确实匹配。

最佳答案

您当前两次绑定(bind)变量 - 一次通过bindParam(),然后再次作为execute( )。您需要通过 bindParam() 或通过 execute() 一次绑定(bind)变量,但不能同时进行。

此外,删除的语法是DELETE FROM...,而不是DELETE column FROM...

所以它要么看起来像这样,通过 execute()

绑定(bind)它们
$DeleteT = $con->prepare("DELETE FROM USERS WHERE Email=:Email AND Pass=:Pass");
$DeleteT->execute(array(
  ':Email' => $Email,
  ':Pass' => $Pass
));

或者,如果您想使用 bindParam()...

$DeleteT = $con->prepare("DELETE FROM USERS WHERE Email=:Email AND Pass=:Pass");
$DeleteT->bindParam(':Pass', $Pass);
$DeleteT->bindParam(':Email', $Email);
$DeleteT->execute();

两者都可以,选择您最喜欢的一个。如果您需要,PDOStatement::bindParam() 有额外的选项(在下面链接的 documentation 中有额外的信息),但为了绑定(bind)两个字符串,任何一种方式都适用。


更新:
根据评论,您希望清空 Examples 列。这意味着您要UPDATE 该行,而不是DELETE 它。下面的示例会将 Example 列设置为空字符串(假设它是一个 text 或 varchar 列,并接受字符串)。如果您希望将其设置为 NULL 或其他值,请按此修改。

$DeleteT = $con->prepare("UPDATE USERS SET Examples=:example WHERE Email=:Email AND Pass=:Pass");
$DeleteT->execute(array(
  ':example' => '', 
  ':Email' => $Email,
  ':Pass' => $Pass
));

SECURITY NOTE:
You should NEVER store passwords in plain-text, or by using poor methods of hashing (such as md5(), sha1(), etc). It's simply not secure! PHP has built-in functions which you should use to handle storing of passwords, see the password_hash() function which is a lot more secure!

关于php - PDO 删除查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45865149/

相关文章:

javascript - 使用 <img src =""标签在 php 中获取图像

PHP/PDO 函数从数据库变量参数返回值

mysql - 我应该授予我的 InnoDB MySQL 用户什么特权?

php - 将 QR Code Scanner android 应用程序连接到在线 mySQL 数据库

php - 将 PK 分配给链接

php - 在两个表上使用联合但重命名字段

php - 如何重定向带有百分比 (%) 符号的 URL?

php - 删除自引用的@ManyToMany 连接

php - 使用 PDO 查询的 SQL 表中的项目

php - 获取连接mysql查询结果中的表名