我有一个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变量。
答案 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,因为它现在是安全的