MYSQL,PHP:将记录从一个数据库插入另一个数据库

DJa*_*ack -1 php mysql

我有必要将一些记录从database1中的一个table1插入到database2中的另一个table2.到目前为止我有这个..

    $records_r = mysqli_fetch_assoc(mysqli_query($conn_r, "SELECT * FROM `export` WHERE ID < 100"));        

    $columns_r = implode(",",array_keys($records_r));
    $values_r = implode(",",array_values($records_r));          

    $import = mysqli_query($conn_i,"INSERT INTO NOTimport ($columns_r) values ($values_r)");
    if (!$import) {
    printf("Error: %s\n", mysqli_error($conn_i));
    exit();}
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

错误:SQL语法中有错误;

这是语法的外观:

INSERT INTO `NOTimport` ('xx,xx,xx,xx,xx,xx,xx,xx') values ('11,'11,E,2079,1931,xx,xx,x')
Run Code Online (Sandbox Code Playgroud)

我99%确定单引号导致错误,但为什么会有?

Fun*_*ner 5

根据您的原始帖子https://stackoverflow.com/revisions/31116693/1并完全覆盖原始帖子而不将其标记为编辑:

您正在使用MySQL import保留字
https://dev.mysql.com/doc/refman/5.5/en/keywords.html

它需要包裹在刻度线中

INSERT INTO `import` ($columns_r) values ($values_r)
Run Code Online (Sandbox Code Playgroud)

或者将该表重命名为保留字以外的其他内容.

另外,$values_r可能需要引用,并且根据所传递的内容$columns_r,您可能需要使用周围的刻度.

即:

INSERT INTO `import` (`$columns_r`) values ('".$values_r."')
Run Code Online (Sandbox Code Playgroud)

即便如此,这对SQL注入也是开放的.

因此,根据您使用这些值进行编辑values ('11,'11,E,2079,1931,xx,xx,x'),只需引用值,因为您在那里有一些字符串.MySQL将区分这些值.

逃避你的价值观:

$values_r = implode(",",array_values($records_r));
$values_r = mysqli_real_escape_string($conn_r, $values_r);
Run Code Online (Sandbox Code Playgroud)

或者$conn_i我对这里的变量感到困惑.如果您使用相同的数据库,请保持一致.

编辑:

正如chris85的评论中所述,使用准备好的陈述并完成它.