Php 写入PDO删除查询值

Php 写入PDO删除查询值,php,mysql,database,pdo,sql-delete,Php,Mysql,Database,Pdo,Sql Delete,我想知道我们是否仍然可以使用新的删除行中的值作为选择,或者我们真的需要在之前选择它吗 示例: 改变这个 $foo = $db->prepare("SELECT * FROM table WHERE id= :id"); $foo->execute(array( "id" => $table_id )); $foo = $foo->fetch(PDO::FETCH_ASSOC); $delete_foo = $bdd->prepare("DELETE FRO

我想知道我们是否仍然可以使用新的
删除
行中的值作为
选择
,或者我们真的需要在之前选择它吗

示例:
改变这个

$foo = $db->prepare("SELECT * FROM table WHERE id= :id");
$foo->execute(array(
    "id" => $table_id
));
$foo = $foo->fetch(PDO::FETCH_ASSOC);

$delete_foo = $bdd->prepare("DELETE FROM table WHERE id = :id");
$delete_foo->execute(array(
    "id" => $table_id
));
echo $foo['name'] . " has been deleted !";
为此:

$delete_foo = $bdd->prepare("DELETE FROM table WHERE id = :id");
$delete_foo->execute(array(
    "id" => $table_id
));
$delete_foo = $delete_foo->fetch(PDO::FETCH_ASSOC);
echo $delete_foo['name'] . " has been deleted !";

这会更容易。我只是想知道,我使用了第1种方法,但它只是记住了,我没有找到答案。

DELETE
查询不会返回任何结果(除了受影响的行之外),因此
PDO::query
将没有任何可用数据可获取。

DELETE
查询不会返回任何结果(除了受影响的行之外),因此,
PDO::query
将没有任何可用数据可获取。

在中,delete语句有一个专有扩展名为
RETURNING
。提供类似的东西,他们称之为输出

例如,下面的DELETE语句中的OUTPUT DELETED.* 返回从ShoppingCartItem表中删除的所有列:

不幸的是,mysql没有类似于上面的内容。如果删除一行,它将消失(除非回滚事务而不是提交)。如果要选择数据,需要在中的DELETE

之前执行Select,DELETE语句有一个专有扩展名为
RETURNING
。提供类似的东西,他们称之为输出

例如,下面的DELETE语句中的OUTPUT DELETED.* 返回从ShoppingCartItem表中删除的所有列:


不幸的是,mysql没有类似于上面的内容。如果删除一行,它将消失(除非回滚事务而不是提交)。如果要选择数据,需要在删除之前执行Select。对于提供的示例,额外的Select查询毫无意义。因为你已经有了你的美元价值

我更愿意说,您需要简化整个PDO代码。将下面的代码片段与您的代码片段进行比较

$foo = $db->run("SELECT foo FROM table WHERE value = ?", [$value])->fetchColumn();
$db->run("DELETE FROM table WHERE value = ?", [$value]);
echo "$foo has been deleted!";
run()函数可以通过非常小的PDO修改来实现:

class MyPDO extends PDO
{
    public function run($sql, $args = NULL)
    {
        $stmt = $this->prepare($sql);
        $stmt->execute($args);
        return $stmt;
    }
}

代码取自我的文章,

对于提供的示例,额外的select查询毫无意义。因为你已经有了你的美元价值

我更愿意说,您需要简化整个PDO代码。将下面的代码片段与您的代码片段进行比较

$foo = $db->run("SELECT foo FROM table WHERE value = ?", [$value])->fetchColumn();
$db->run("DELETE FROM table WHERE value = ?", [$value]);
echo "$foo has been deleted!";
run()函数可以通过非常小的PDO修改来实现:

class MyPDO extends PDO
{
    public function run($sql, $args = NULL)
    {
        $stmt = $this->prepare($sql);
        $stmt->execute($args);
        return $stmt;
    }
}

代码取自我的文章,

为什么不执行
echo“$value已被删除!”?为什么不执行
回显“$value已被删除!”