使用 fetch 定义前一个变量的变量

defining variable with previous variable with fetch

我想使用 $querycheckuserid(之前定义的)数据库信息在我的数据库中定义 $querycheckauth,但是我获取 pdo 异常失败并且它似乎不起作用。

        $querycheckuserid = $a->con->prepare("select userid from users where auth = ? ");
        $querycheckuserid->execute([$cauth]);
        $querycheckauth = $a->con->prepare("select id from users where userid = ?");
        $useridfetch = $querycheckauth->fetch();
        $querycheckauth->execute([$useridfetch]);

我也试过了

        $querycheckuserid = $a->con->prepare("select userid from users where auth = ? ");
        $querycheckuserid->execute([$cauth]);
        $querycheckauth = $a->con->prepare("select id from users where userid = ?");
        $querycheckauth->execute([$querycheckauth]);

但是这给了我以下错误:

未捕获错误:class PDOStatement 的对象无法转换为 D:\xampp\htdocs\cinematic\loginwithcinematic.php:42 堆栈跟踪中的字符串:#0 D: \xampp\htdocs\cinematic\loginwithcinematic.php(42): PDOStatement->execute(Array) #1 {main} thrown in D:\xampp\htdocs\cinematic\loginwithcinematic.php on line 42

你做的差不多对了,看看下面的:

$querycheckauth = $a->con->prepare("select id from users where userid = ?");
// you need to call execute before fetch
$querycheckauth->execute([123]); // here you have to put the userid in question
// ->fetch() will return array, while you have only single value you can use:
$useridfetch = $querycheckauth->fetchColumn();

现在 $useridfetch 包含您要求的 idecho $useridfetch;

123 而不是 ?,例如:select id from users where userid = 123,您可以在那里设置变量,但必须先将其设置为特定值。

此外,您不应该尝试执行 echo $querycheckauth; 这是您的错误来源,因为值类型是 PDOStatement,它不能转换为字符串。你可以做 var_dump($querycheckauth); 不会产生错误。