Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的PDO$stmt->;bind_result()函数调用是否在执行SELECT查询后挂起?_Php_Pdo - Fatal编程技术网

Php 为什么我的PDO$stmt->;bind_result()函数调用是否在执行SELECT查询后挂起?

Php 为什么我的PDO$stmt->;bind_result()函数调用是否在执行SELECT查询后挂起?,php,pdo,Php,Pdo,我有一个MySQL数据库,表“Test”有一列“TestData”。TestData有三条记录具有以下值:“这是值1”,“这是另一个字符串”,以及 “第三只是为了运气” 我编写了以下PHP代码来检索记录 <?php try { $hostname = "redacted"; $username = "redacted"; $password = "redacted"; $database = "redacted"; $conn = new PDO

我有一个MySQL数据库,表“Test”有一列“TestData”。TestData有三条记录具有以下值:“这是值1”,“这是另一个字符串”,以及 “第三只是为了运气”

我编写了以下PHP代码来检索记录

<?php

try {
    $hostname = "redacted";
    $username = "redacted";
    $password = "redacted";
    $database = "redacted";

    $conn = new PDO("mysql: host=$hostname; dbname=$database", $username, $password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "SELECT TestData FROM Test";

    $stmt = $conn->prepare($sql);

    $stmt->execute();
}
catch(PDOException $e)
{
    $finalResult = $finalResult . "," . $e->getMessage();
}

echo "you are here (" . $stmt->rowCount() . ")<br>";

if ($stmt->rowCount() > 0) {

    echo "found (" . $stmt->rowCount() . ")<br>";

    $stmt->bind_result($td);

    echo "bind successful<br>";

    while ($stmt->fetch()) {
        echo "testdata (" . $td . ")<br>";
    }
} else {
    echo "nothing found<br>";
}

?>

我收到的结果是

你在这里(3)

发现(3)

PHP脚本永远不会到达“echo”bind successful
'”语句。“$stmt->bind_result($td);”语句挂起

假设rowCount=3,查询似乎可以工作。我使用了基本相同的结构来执行正常工作的插入


我在做什么?谢谢。

我将代码更改为以下代码,它可以正常工作

<?php

    $hostname = "redacted";
    $username = "redacted";
    $password = "redacted";
    $database = "redacted";

    $conn = new mysqli($hostname, $username, $password, $database);
    if ($conn->connect_error) {
        fwrite(STDERR, "Connection failed: " . $conn->connect_error . "\n");
        exit(1);
    }

    $sql = "SELECT TestData FROM Test WHERE ?";

    $stmt = $conn->stmt_init();

    if(!$stmt->prepare($sql)) {
        print "Failed to prepare statement\n";
    } else {
        $stmt->bind_param("s", $condition);
    }

    $condition = "1 = 1";

    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
        foreach ($row as $r) {    
            echo "testdata(" . $r . ")<br>";
        }
    }
?>


不再为我混合PDO和MySQLi。谢谢你的帮助。很抱歉给您带来不便。

如果您只是尝试使用php pdo从数据库获取项目,则需要存储结果

$results = $stmt->fetch(); //will get one row

$results = $stmt->fetchAll(); //will take all results and store in an array

希望这有帮助。

我认为您需要使用
get\u result
而不是因为您有
从Test中选择TestData
。综上所述:绑定_结果在pdo中不存在,这是一个mysqli方法。不要混合使用这两个API。Re:Bagus Tesa“使用get_result而不是bind_result”-在$stmt->get_result()中也会发生同样的情况。无论如何,我已经读到PDO是最好的方式。我将尝试第二种最好的方法,即无PDO。