【问题标题】:PDO SQL Delete statement not found [closed]未找到 PDO SQL 删除语句 [关闭]
【发布时间】:2020-01-06 09:55:49
【问题描述】:

我在尝试通过 PDO 执行的 SQL 语句时遇到问题。没有异常只抛出一个警告:“sh: 1: DELETE: not found”。我不确定错误在于我的语法还是 pdo 的安装/设置有什么帮助?

try {
    $ConnectionObj = new PDO("mysql:host=localhost;dbname=Person", 'user', '1234');
    $ConnectionObj->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $SqlStr = "DELETE FROM Details WHERE EmailAddress = '".$EmailAddrStr."' ";
    exec($SqlStr);
    //echo "Person deleted"."\n";
}
catch (PDOException $exception) {
    echo $exception;
}

【问题讨论】:

  • exec 不是 pdo 函数..
  • @treyBake 是对的 exec() 将执行 shell 命令,因此只有你面对 sh: 1: DELETE: not found警告,因为 shell 正在尝试查找 Delete 命令。
  • 你将不得不print_r($exception)var_dump($exception) 因为$exception 不是一个标量值所以echo 会产生它自己的错误

标签: php sql pdo


【解决方案1】:

exec() 不是 PDO 函数,它用于运行外部应用程序:

exec

(PHP 4, PHP 5, PHP 7)

exec — Execute an external program
Description 
exec ( string $command [, array &$output [, int &$return_var ]] ) : string

exec() executes the given command.

相反,请执行以下操作:

$conn = new PDO('mysql:host=localhost;dbname=db', 'usr', 'pass');

$sql = "DELETE FROM Details WHERE EmailAddress = :addr";
$stmt = $conn->prepare($sql);
$stmt->execute([':addr' => $EmailAddrStr]);

更多信息可以找到here:

【讨论】:

  • exec() 不是 PDO 函数,虽然有 PDO::exec() 函数
  • @OTAR 这实际上是一个好点,我想这就是最初的困惑所在!会
  • 我还建议您在创建 PDO 实例时添加字符集并启用错误报告。
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多