PHP-使用CONCAT()和SQLite处理PDO时出现问题
我使用相同的查询,通过PDO连接器,将字符串连接到两个: MySQL数据库和一个镜像SQLite数据库。 它们都有相同的表、相同的结构等 但是当执行查询时,MySQL正确地执行查询,而SQLite出错,因此我得到一个错误500 是否有一个解决方案使它同时适用于两个数据库? 下面是我使用的参数化查询 正如我所说: 如果没有行PHP-使用CONCAT()和SQLite处理PDO时出现问题,php,mysql,sqlite,pdo,Php,Mysql,Sqlite,Pdo,我使用相同的查询,通过PDO连接器,将字符串连接到两个: MySQL数据库和一个镜像SQLite数据库。 它们都有相同的表、相同的结构等 但是当执行查询时,MySQL正确地执行查询,而SQLite出错,因此我得到一个错误500 是否有一个解决方案使它同时适用于两个数据库? 下面是我使用的参数化查询 正如我所说: 如果没有行`IP`=CONCAT(IP,:param3),一切都很正常(在MySQL和SQLite上) 通过行`IP`=CONCAT(IP,:param3),MySQL被正确连接,SQL
`IP`=CONCAT(IP,:param3)
,一切都很正常(在MySQL和SQLite上)
通过行`IP`=CONCAT(IP,:param3)
,MySQL被正确连接,SQLite崩溃
$query = "UPDATE downloaded SET
`player` = player + 1,
`when` = :param0,
`IP` = CONCAT(IP, :param3)
WHERE who = :param1 AND what = :param2";
$params = array(
':param0' => $when_,
':param1' => $Email,
':param2' => $file,
':param3' => $IP_Caller . "<br />"
);
$query=“更新下载集
`玩家`=玩家+1,
`当`=:param0时,
`IP`=CONCAT(IP,:param3)
其中who=:param1和what=:param2”;
$params=数组(
“:param0”=>$when,
“:param1”=>$Email,
':param2'=>$file,
“:param3'=>$IP_调用者。”
”
);
提前感谢您的帮助SQLite不支持函数
CONCAT()
您必须使用运算符
|
:
`IP` = IP || :param3
如果您想在MySql中也使用相同的代码,则必须启用该模式。默认情况下,此模式处于禁用状态,因此运算符
|
只是逻辑或
的别名。此外,如果启用了管道作为连接模式,则MySQL也支持此模式。在这种情况下,SQLite正确连接。但是MySQL将内部值替换为1。@TormyVanCool如果您想在MySQL中也使用相同的代码,则必须启用管道作为CONCAT模式:默认情况下,Thir模式是禁用的,因此操作符|
只是逻辑或
的别名。