Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使用CONCAT()和SQLite处理PDO时出现问题_Php_Mysql_Sqlite_Pdo - Fatal编程技术网

PHP-使用CONCAT()和SQLite处理PDO时出现问题

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

我使用相同的查询,通过PDO连接器,将字符串连接到两个: MySQL数据库和一个镜像SQLite数据库。 它们都有相同的表、相同的结构等

但是当执行查询时,MySQL正确地执行查询,而SQLite出错,因此我得到一个错误500

是否有一个解决方案使它同时适用于两个数据库? 下面是我使用的参数化查询

正如我所说: 如果没有行
`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模式是禁用的,因此操作符
|
只是逻辑
的别名。