php脚本中的mysql插入查询无法正常工作

时间:2014-08-21 09:05:54

标签: php mysql

我有一个php脚本从表中获取数据,然后尝试将获取的数据插入第一个表的第二个表副本中:

function copy_data($id,$mysql_conn){
 if($res=mysql_query("SELECT * from table1 WHERE id='".$id."'", $mysql_conn)){
       if($row=mysql_fetch_array($res)){
            $sql  ="INSERT INTO table2 (id, Field1, Field2) values('" . $row['id'] . "', '" . $row['Field1'] . "', '" . $row['Field2'] . "')";
            mysql_query($sql,$mysql_conn);
           }
}
}   
copy_data($id,$mysql_conn);// $id is id of the element I want to add 

插入查询工作正常,但有一种情况会产生异常:其中一个字段包含一个'字符,失败的查询的exp: INSERT INTO table2(id,Field1,Field2)值(' 12','公司',' Kurt' Reifen-Shop')例外来自'字符如何插入包含此字符的php变量。

3 个答案:

答案 0 :(得分:1)

在将数据插入$ sql之前必须先转义数据:

function copy_data($id,$mysql_conn){
 if($res=mssql_query("SELECT * from table1 WHERE id='".$id."'", $mysql_conn)){
       if($row=mysql_fetch_array($res)){
            $row['Field1'] = mysql_real_escape_string($row['Field1']);
            $row['Field2'] = mysql_real_escape_string($row['Field2']);
            $sql  ="INSERT INTO table2 (id, Field1, Field2) values('" . $row['id'] . "', '" . $row['Field1'] . "', '" . $row['Field2'] . "')";
            mysql_query($sql,$mysql_conn);
           }
}
}   
copy_data($id,$mysql_conn);// $id is id of the element I want to add 

答案 1 :(得分:1)

您可以使用一个声明来完成:

$id = mysql_real_escape_string($id);
INSERT INTO table2 (id, Field1, Field2) SELECT id, Field1, Field2 FROM table1 WHERE id='".$id."'"

答案 2 :(得分:0)

我不明白你是如何设法把它放到第一张桌子上但你应该使用的 mysql_real_escape_string 比如$ field1 = mysql_real_escape_string($ row ['Field1']); 而不是把$ field1,因为它现在是安全的