【问题标题】:Check PostgreSQL tables before insertion插入前检查 PostgreSQL 表
【发布时间】:2015-08-20 10:00:25
【问题描述】:

我必须使用这些变量在 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')";
}

但是我有一些问题把它放到正确的顺序。 有人可以完成这段代码吗?

【问题讨论】:

    标签: php database postgresql


    【解决方案1】:

    您可以通过这种方式对单个查询执行此操作:

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

    实施这种方法会更直接。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-05
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2014-10-04
      相关资源
      最近更新 更多