MySQLi返回一个带有bind_result的数组,并且fetch不起作用

时间:2013-06-30 01:42:43

标签: php sql database mysqli php-5.3

我想知道如何重写/修复以下代码。

基本上,我有一个名为DB的数据库,其中有一个名为poems的表。我想获取poems表中具有特定ID的所有数据(即谁写了这首诗,它有的标签,它的内容,创建时间等等)并安全地将它存储在一个数组中以后打印到网页上。

我所拥有的托管服务不支持mysqli_getresult()所需的mysqlnd驱动程序,因此我目前收到错误“Call to undefined method mysqli_stmt::get_result()

$mysqli是使用new mysqli()

预先写入数据库的连接
function getpoemdata($mysqli) {
                echo "Function started.";
                if(isset($_GET['poem_id'])) { // Check if poem_id is set in the URL
                    $poemid=$_GET['poem_id']; // Get poem_id set in URL
                    if (!is_int($poemid)) { $poemid = 7; } // Check if poem_id is set an integer
                    if ($poemid <= 0) { $poemid = 7; } //Check if poem_id is positive- If negative, it is changed to positive
                    $stmt = $mysqli->prepare("SELECT * FROM `poems` WHERE `poem_id` = ?");
                    $stmt->bind_param('i', $poemid);
                    $stmt->execute();
                    $result = $stmt->get_result();
                    $returned_data = $returned_data->fetch_array();
                    while($stmt->fetch()){
                        echo $returned_data . '<br />';
                    }
                    $stmt->free_result();
                }
                else { //If user simply types "poemview.php" and not "poemview.php?poem_id="
                echo "error";
            }
    }

提前感谢您提供任何帮助 - 我对PHP很新,并且在我学习的过程中尝试学习它 - 每次我尝试做一些新的事情并且需要学习更多功能时,它只是有点压倒性的

1 个答案:

答案 0 :(得分:3)

get_result()是在PHP 5.3.0中引入的,如上所述,需要 mysqlnd 。但是,我认为你不需要它。您可以将fetch()bind_result结合使用来检索数据。可能还有其他方式。

文档示例:

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";

if ($stmt = $mysqli->prepare($query)) {

    /* execute statement */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($name, $code);

    /* fetch values */
    while ($stmt->fetch()) {
        printf ("%s (%s)\n", $name, $code);
    }

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

文档中的另一个示例显示了如何绑定到数组。