Php 将两个准备好的语句合并起来不起作用

Php 将两个准备好的语句合并起来不起作用,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,首先,另一个人说,我试着把这两种说法结合在一起 <?php $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); $sql = "UPDATE users SET pass = :password WHERE usrn = :id; SELECT prim FROM users WHERE usrn = :id;"; $stmt = $conn->prepare($sql); $stmt-

首先,另一个人说,我试着把这两种说法结合在一起

<?php
  $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
  $sql  = "UPDATE users SET pass = :password WHERE usrn = :id;
           SELECT prim FROM users WHERE usrn = :id;";
  $stmt = $conn->prepare($sql);
  $stmt->bindParam(":id", $_SESSION["idPersist"]);
  $stmt->bindParam(":password", password_hash($_POST["password"], PASSWORD_DEFAULT));
  $stmt->execute();
  $result = $stmt->fetch(PDO::FETCH_ASSOC); //// line 71
?>
但是var_dump$result返回Boolfalse,因此显然,在这两种情况下,获取结果并将其存储为变量是不正确的

我不熟悉PHP和MySQL,所以我现在不知所措。

改变这个

$sql  = "SELECT prim FROM users WHERE usrn = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $_SESSION["idPersist"]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION["session"] = $result["prim"];
对此,

$sql  = "SELECT prim FROM users WHERE usrn = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $_SESSION["idPersist"]);
$stmt->execute(); // Your problem
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION["session"] = $result["prim"];

您缺少查询的执行。

尝试使用fetchAll而不是fetchAllfetch@Akintunde我会试试的thx@Akintunde取回实际上是有效的。我只是缺少一个execute语句。我想我盯着屏幕看太久了。我可以发誓我已经检查过了:/没有办法把这两种说法结合起来吗?噢,哈哈,我甚至都没发现。因为你的代码有点集群化。联合收割机是什么意思?你不能把这两张桌子连起来吗?数据库模式如何?如果你正在编码,休息一下,我在进入hyper drive时会出错,你用什么IDE编码?NM我想我确实错过了。o:我发誓我已经检查过了。无法合并这两个查询吗?现在删除此问题。我不想要任何其他的反对票:/我平衡了它,没有问题是愚蠢的,即使我问过这样的事情。这正是我的感受。我很少对评论投反对票,即使是非常直截了当的评论。每个人都要从某个地方开始,每个人都会犯错,对吗?我讨厌社区中那些无情地贬低这些东西的人。如果你知道这些术语,当你在谷歌上搜索或搜索解决方案时,你仍然不难找到这些东西
$sql  = "SELECT prim FROM users WHERE usrn = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(":id", $_SESSION["idPersist"]);
$stmt->execute(); // Your problem
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION["session"] = $result["prim"];