bind_param()函数出错

时间:2013-11-24 02:15:25

标签: php mysql mysqli prepared-statement glob

此代码记录某个目录中的所有文件名。文件名将存储到特定的数据库表中。这是我的代码

<?php
$user_dir = "fetz/";
$table_name = "fetz";
$connect = mysqli_connect("localhost", "root", "", "mdrsusr");
if(!$connect) {die();}
foreach (glob("$user_dir*.txt") as $filename) {
    echo $filename."<br />";
    $query = $connect->prepare("INSERT INTO ? SET img_link='?'");
    $query->bind_param("ss", $table_name, $filename); //this part *
    if(!$query) {die();}
    $query->execute();
}
$query->close();
$connect->close();
?>

* - 此部分有错误说明

Fatal error: Call to a member function bind_param() on a non-object

2 个答案:

答案 0 :(得分:1)

您的查询中存在语法错误,导致您没有有效的mysqli语句对象。

INSERT INTO ? SET img_link='?'

应该是(您不需要参数周围的引号)

INSERT INTO ? SET img_link=?

答案 1 :(得分:0)

好的,我发现了我的错误。此

$query->bind_param("ss", $table_name, $filename);

导致错误,因此我删除$table_name和额外的s并成为

$query->bind_param("s", $filename);

这实际上是它的魔力 我也用了第一个答案。