php在没有任何占位符的情况下使用预准备语句获取数据

时间:2013-03-10 13:36:16

标签: php mysql mysqli

我在我的网站上处于原型阶段。

由于准备好的陈述更加安全。与mysql db交谈的新方法,我决定使用它们并阅读php.net中的相关部分,但php.net中的所有示例都使用where name = ?等占位符。

下面我不需要占位符,但我无法实现打印输出。

我的数据库没有输出。

我注意到:

注意:未定义的变量:第16行的行... 注意:未定义的变量:第16行的行... 注意:未定义的变量:第16行的行... 注意:未定义的变量:第16行的......

我该怎么办?你能帮我吗。

谢谢,尊敬

在我的index.php中

//mysql bağlantısı
    global $db_baglanti;
    $db_baglanti = new mysqli(vt_host, vt_user, vt_password, vt_name);
    if ($db_baglanti->connect_errno) 
    {
        echo "MySQL bağlantısı kurulamadı: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

    if (!$db_baglanti->set_charset("utf8")) 
    {
        printf("utf8 karakter setinin yüklenmesinde problem oluştu: %s\n", $db_baglanti->error);
    } 
    else 
    {
        $db_baglanti->set_charset("utf8");
    }

在附页中

$sorgum = "SELECT kolon_baslik, kolon_yazi FROM tb_yazilar";


if ($beyan = $db_baglanti->prepare($sorgum)) 
{

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



    /* fetch values */
    while ($beyan->fetch()) {
        echo $row['kolon_baslik'].'<br /><br />'.$row['kolon_yazi'].'<br /><br />';
    }

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

2 个答案:

答案 0 :(得分:0)

来自全能手册:http://www.php.net/manual/en/mysqli-stmt.fetch.php

  

请注意,在调用之前,所有列都必须由应用程序绑定   mysqli_stmt_fetch()。

从第一个例子开始:

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

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

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

您缺少的是$beyan->bind_result($kolon_baslik, $kolon_yazi);并使用这些变量而不是不存在的$row数组。

答案 1 :(得分:0)

谢谢,我在此链接找到了答案:http://php.net/manual/en/mysqli-stmt.fetch.php

工作代码是:

if ($beyan = $db_baglanti->prepare($sorgum)) 
{

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

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

    /* fetch values */
    while ($beyan->fetch()) {
        //printf ("%s (%s)\n", $name, $code)
        echo $name.'<br /><br />'.$code.'<br /><br />';
    }

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

我了解到我必须将mysql结果绑定到变量,然后打印出绑定的变量值。相关代码为:$beyan->bind_result($name, $code);