【问题标题】:Simple object sqli insert简单对象sql插入
【发布时间】:2014-09-25 17:04:27
【问题描述】:

您好,我想将 $_SESSION 中的所有内容插入到行 $key 中,值为 $value 所以像foreach ($_SESSION as $key => $value) {} 我在看:Best way to INSERT many values in mysqli? mysqli 中的行名称与给定 $key 的名称相同。我需要在其 $key (row) 中插入每个 $value

代码:

$query = "INSERT INTO testtable VALUES (?)";
$stmt = $dbc->prepare($query);
$stmt->bind_param("s", $key);
$mysqli->query("START TRANSACTION");
foreach ($_SESSION as $key => $value) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");

【问题讨论】:

    标签: php object mysqli foreach insert


    【解决方案1】:

    您的查询有语法错误,您从未费心检查:

    $query = "INSERT INTO testtable podatki VALUES (?)";
                          ^^^^^^^^^^^^^^^^^
    

    如果这确实是表名,那么它应该用反引号引起来:

    $query = "INSERT INTO `testtable podatki` VALUES (?)";
                          ^-----------------^
    

    如果podatki是一个字段名,那么它应该是

    $query = "INSERT INTO testtable (podatki) VALUES (?)";
                                    ^-------^
    

    并且永远不要假设数据库操作成功。始终检查错误:

    $stmt = $dbc->prepare($query);
    if (!$stmt) {
       die(mysqli_error($dbc));
    }
    

    【讨论】:

    • 对不起,我的错……应该是“INSERT INTO testtable VALUES (?)”;
    【解决方案2】:

    错误是说您试图在非对象上调用成员函数,即bind_param()

    这意味着这一行:

    $stmt = $dbc->prepare($query);
    

    没有成功,

    因此您的返回值设置为$stmt 的值不正确

    因此,当您尝试调用 bind_param 时,它会失败,因为 $stmt 不是它所期望的对象类型。

    【讨论】:

    • 有什么想法吗?我不明白代码。 php 中的对象编程让我感到困惑
    • @Newb 在$stmt = $dbc->prepare($query); 之后添加一行代码:var_dump($stmt); die; 并编辑您的问题以发布结果。
    • bool(false) 是我得到的。 $dbc 是 $dbc = new mysqli(stuff..);对?你能检查一下这段代码背后的逻辑吗?
    • 好的,我修复了查询,复制了一些错误。现在我得到列计数与第 1 行的值计数不匹配。第一行是具有自动增量的主要“id”?这是什么意思。一定有一个我不明白的逻辑问题
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 2023-03-18
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多