【问题标题】:php fetching no data with prepared statement without any placeholderphp在没有任何占位符的情况下使用准备好的语句获取任何数据
【发布时间】:2013-03-10 13:36:15
【问题描述】:

我的网站正处于原型阶段。

由于准备好的语句更安全并且是与 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();
}

【问题讨论】:

标签: php mysql mysqli


【解决方案1】:

来自万能手册: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-&gt;bind_result($kolon_baslik, $kolon_yazi); 并使用这些变量而不是不存在的 $row 数组。

【讨论】:

    【解决方案2】:

    谢谢,我在这个链接找到了答案: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-&gt;bind_result($name, $code);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多