php - 插入前检查 PostgreSQL 表

标签 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')";
}

但我在将其按正确顺序排列时遇到了一些问题。 有人可以完成这段代码吗?

最佳答案

您可以通过这种方式使用单个查询来完成此操作:

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

实现这种方法会更加直接。

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

关于php - 插入前检查 PostgreSQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32115207/

相关文章:

php在sql数据库中查找最匹配的句子

php - AWS SDK for PHP 可以在不禁用 osx 上的 SSL 验证的情况下工作吗?

php 和 mysql db 从 Json 文件插入

mysql - 使用 EXISTS 通过 IN 编写查询

database - 对返回图像、音频和所有重量级数据类型的 Web 服务的调用

mysql - mongoDB vs mySQL——为什么在某些方面比另一个更好

sql - Postgres 选择不同字符大小写的电子邮件副本

postgresql - 如何检查postgres用户和密码?

php - 如何从 php 与 MySQLi 保持连接

Postgresql 列出外部数据包装器?