我在我的网站上处于原型阶段。
由于准备好的陈述更加安全。与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();
}
答案 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);