使用变量作为输入时,Bind_param()关于非对象错误

时间:2014-10-13 19:03:04

标签: php mysqli

尝试使用mysqli进行更新,方法是调用类似的类函数:

$nyVaegt = 10;
$navn = 'Ord';

$nyOevelse = new oevelse();
$nyOevelse->opdaterOevelse( $nyVaegt, $navn );

这是相应的类函数:

public function opdaterOevelse (
        $nyVaegt,
        $navn)

    {
        $this->nyVaegt = $nyVaegt;
        $this->navn = $navn;

        global $mysqli;

        $stmtopdaterOevelseIHistorik = $mysqli->prepare("UPDATE oevelser SET `vaegt12reps`=? WHERE `navn`='?' VALUES (?, ?)");
        var_dump($stmtopdaterOevelseIHistorik);
        $stmtopdaterOevelseIHistorik->bind_param(
                "ds", 
                $nyVaegt,
                $navn);

        $stmtopdaterOevelseIHistorik->execute();

if ( $stmtopdaterOevelseIHistorik )
       echo "Query success!<br>";
   else
       echo "Query failed!<br>";

      }

如果我像这样运行它,它就说不出来:

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

错误指的是这一行:

$stmtopdaterOevelseIHistorik->bind_param(

var_dump response:bool(false)

因此,在绑定参数时出现问题,似乎。

如果我绕过变量并按这样调用:

$stmtopdaterOevelseIHistorik = $mysqli->prepare("UPDATE oevelser SET `vaegt12reps`=100 WHERE `navn`='Ord'");

它运作正常......

尝试过各种各样的'','“ - 变种,但我不能让它发挥作用...... - 你们这些优秀人才的建议......?

1 个答案:

答案 0 :(得分:1)

据我所知,UPDATE不使用VALUES:

另外,删除='?'中的引号,这是以下内容的主要原因:

  

在非对象

上调用成员函数bind_param()

将现有行更改为以下内容:

$stmtopdaterOevelseIHistorik = $mysqli->prepare("UPDATE oevelser SET `vaegt12reps`=? WHERE `navn`=?");