使用PDO在表中插入数据的功能 - 参数号无效:未定义参数

时间:2013-06-29 14:38:37

标签: php mysql pdo

这是我第一次使用PDO,而我正在尝试创建一个函数,只需传递3个参数即可在表中插入数据。

这是功能:

public function insert($t, $v, $r)
    {
        if ($this->active)
        {
            if (($t != null) && ($r != null) && ($v != null) && (count($v) == count($r)))
            {
                $instruction = 'INSERT INTO `' . DBNAME . '`.`' . $t . '` (';

                for ($i = 0; $i < count($r); $i++)
                    $_r[$i] = '`' . $r[$i] . '`';
                $_r = implode(',', $_r);

                $instruction .= $_r . ') VALUES (';

                for ($i = 0; $i < count($r); $i++)
                    $r[$i] = ':' . $r[$i];
                $r = implode(',', $r);

                $instruction .= $r . ');';

                $statement = $this->PDO->prepare($instruction);

                for ($i = 0; $i < count($r); $i++)
                    $statement->bindParam($r[$i], $v[$i]);

                $statement->execute();
                echo $instruction;
                return true;
            } else
                return false;
        } else
            return false;
    }

我试过了:

$t = "users";
$v = array(201);
$r = array("id_user");

$data->insert($t, $v, $r);

但它不起作用。这就是它的回报:

  

警告:PDOStatement :: execute()[pdostatement.execute]:SQLSTATE [HY093]:参数号无效:参数未在第68行的/Applications/XAMPP/xamppfiles/htdocs/friz/mysql_functions.php中定义   INSERT INTO frizusersid_user)VALUES(:id_user);

你能帮助我吗?

P.S。:我使用了搜索功能,但我找不到任何解决问题的方法。

1 个答案:

答案 0 :(得分:2)

你的行

$r = implode(',', $r);

将$ r从数组转换为字符串;

所以当你尝试绑定时它不再包含一个名字数组;所以$r[$i]只是字符串$ r的第一个字符,它是':'

    for ($i = 0; $i < count($r); $i++)
        $_r1[$i] = '`' . $r[$i] . '`';
    $_r1 = implode(',', $_r1);

    $instruction .= $_r1 . ') VALUES (';

    for ($i = 0; $i < count($r); $i++)
        $_r2[$i] = ':' . $r[$i];
    $_r2 = implode(',', $_r2);

    $instruction .= $_r2 . ');';

将$ r作为数组