1

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

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

我拥有的托管服务不支持所需的 mysqlnd 驱动程序mysqli_getresult(),所以我目前收到错误“ 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 还很陌生,并且在学习过程中尝试学习它-每次我尝试做一些新的事情并需要学习十几个函数时,都会感到有点不知所措。

4

1 回答 1

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();
?>

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

于 2013-06-30T01:54:16.203 回答