在PostgreSQL中使用单引号动态插入文本

时间:2016-12-28 02:44:47

标签: php sql postgresql

我有一个问题,就是将数据文本从一个表动态插入到另一个表中,该表可以有一个引号(')。

我的案例中无法使用链接herehere,因为数据是动态的(来自表格)。

这是我在php中的代码:

...
//select from master table with some condition inputted by user
$sql = "SELECT prod_name, prod_price FROM master_prod WHERE cat_prod ='$category'";

//get all data and insert to another table
$rs5 = $db->GetAll($sql);
foreach ($rs5 as $row) {
    $rs = $db->Execute("INSERT INTO trans_temp (name, price) VALUES ('$row[prod_name]','$row[prod_price ]') ");
}
...

我的问题是,prod_name数据可以有单引号('),当它发生时,它不会插入表trans_temp,因为INSERT代码有单引号('$row[prod_name]')。

例:INSERT INTO trans_temp (name, price) VALUES ('ICE BON BON 5'S 80GR (1C=24)','130')

有人能帮助我吗?谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

PDO可能是更好的解决方案,但您也可以使用''进行转义:

$rs5 = $db->GetAll($sql);
foreach ($rs5 as $row) {
    $t1 = str_replace("'", "''", $row['prod_name']);
    $t2 = str_replace("'", "''", $row['prod_price']);
    $rs = $db->Execute("INSERT INTO trans_temp (name, price) VALUES ('$t1','$t2') ");
}