【发布时间】:2016-12-04 06:35:45
【问题描述】:
我可以将回显的输出转换为在 phpMyAdmin 中执行的 SQL 语句...
来自:
INSERT INTO crumbs (ip_address,ip_address_2,device_info,user_id,connections) VALUES(?,?,?,?,?)Value:'00.000.000.000', '00.000.000.000', 0,0000, 1
进入这个:
INSERT INTO crumbs (ip_address,ip_address_2,device_info,user_id,connections) VALUES('00.000.000.000', '00.000.000.000', 0,0000, 1)
它将数据插入数据库,没有错误,但是它通过 PHP-PDO 执行...
与:
SQLSTATE[HY093]: 参数号无效
代码:
$columns = '('.implode(',', array_keys($user_connection)).''.",user_id,connections)";
$inserts="(".implode(',',array_fill(0,count($user_connection)+2, '?')).")";
$values = implode(', ',($user_connection)).",$user_id, 1";
$sql_insert = "INSERT INTO crumbs ".$columns." VALUES".$inserts;
$stmt = $this->_db->prepare($sql_insert);
$stmt->execute(array($values));
编辑-添加 $user_connection
$user_connection [ 'ip_address'] = "'".$_SERVER['REMOTE_ADDR']."'";
$user_connection [ 'ip_address_2']="'".$_SERVER['HTTP_X_FORWARDED_FOR']."'";
$user_connection ['device_info']=0;
在执行 SQL 代码期间发生错误。我浏览了所有示例,没有发现任何等效的内容,我认为这是我缺少的一些简单的东西(规则?),因为代码是在本地执行的。
【问题讨论】:
-
我已经发布了$user_connection的结构,我可能对它的理解有误,但我几乎完全用'array'或上面的方式封装了我的执行命令:execute(array($values) );这些值变成逗号分隔的数组值(或者我的经验如此)。不过给我一分钟,我会尝试将它封装在一个单独的数组中。
-
好吧,这行得通,我很困惑为什么 array() 在这种情况下不起作用,而它在我的代码中的其他任何地方都起作用。
-
也许其他地方有点不同。。我不能不看就肯定地说(确保值正确存储在 batabase 中)
-
评论转换成答案..