在插入

时间:2015-08-20 10:00:25

标签: php database postgresql

我必须使用这些变量在PgSQL表中插入几个值

$knr = $reader->getAttribute('Nr');
$kname = $reader->getAttribute('Name');

这个插入代码:

$SQL = "";
$SQL .= "SELECT
(konzern).knr AS knr, (konzern).name AS name
FROM konzern";
$SQL .= "INSERT INTO konzern (";
$SQL .= "knr, name";
$SQL .= ") VALUES (";
$SQL .= "'".$knr."', '".$kname."'";
$SQL .= ");".PHP_EOL;

我想检查表“Konzern”是否已经有$ knr的行,如果是,它应该插入到此,如果不是它应该创建一个新行

$query = doQuery("select nr from konzern where knr = '".$knr."'");
$num_rows = ($query->num_rows);
if ($num_rows > 0) {
    // do nothing
}
else {
    $sql .= "select nextval('konzern_nr_seq')";
}

但是我有一些问题,这是正确的顺序。 有人可以填写此代码吗?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用单个查询执行此操作:

INSERT INTO konzern SELECT val1, val2 
WHERE NOT EXISTS(
SELECT nr from konzern where knr = 'var1'
) 

实施这种方法会更加向前发展。

并且记得使用查询参数而不是连接查询文本,以避免SQL注入。