Php 用于在具有PDO的表中插入数据的函数-参数编号无效:未定义参数
这是我第一次使用PDO,我试图创建一个函数,通过传递3个参数在表中插入数据 这就是功能:Php 用于在具有PDO的表中插入数据的函数-参数编号无效:未定义参数,php,mysql,pdo,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)))
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;
}
但它不起作用。这就是它的回报:
警告:PDOStatement::execute()[PDOStatement.execute]:SQLSTATE[HY093]:无效参数编号:第68行的/Applications/XAMPP/xamppfiles/htdocs/friz/mysql_functions.php中未定义参数
插入friz
users
(id\u user
)值(:id\u user)
你能帮我吗
注:我使用了搜索功能,但没有找到任何解决问题的方法。您的线路
$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 . ');';
for($i=0;$i
将$r保留为数组那么您在准备$r之前是否尝试过回显它?我的意思是做一些基本的调试。。。。您正在代码中构建一个名为
$instruction
的变量,然后将其准备为语句。。。你真的知道$instruction
字符串在那一点上是什么样子吗?我在echo$instruction中打印$instruction的值;在执行查询之前和之后。它返回的是我所期望的:插入friz
users
(id\u user
)值(:id\u user);大多数错误都是错误,这就是为什么第二组眼睛有帮助(代码检查、成对编程)
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 . ');';