【发布时间】:2015-02-20 15:57:57
【问题描述】:
我想循环到 DB 以检查变量是否存在,然后当它不存在时,我将 INSERT 插入 DB。例如:
$i = 1;
$string = $_POST['name'];
$req = $pdo->prepare('SELECT name FROM users WHERE name = ?');
$req->execute(array($string));
while($req->rowCount() > 0) {
$name = $string . '-' . $i;
// HERE IN NEED TO TEST THE EXISTENCE OF THE VAR ($name) INTO DB, BUT HOW?
$i++
}
if ($name) {
$string = $name;
}
$req = $pdo->prepare('INSERT INTO users (name) VALUES (?)');
$req->execute(array($string));
$req->closeCursor();
【问题讨论】:
-
INSERT ... ON DUPLICATE KEY UPDATE -
ON DUPLICATE KEY UPDATE 仅适用于整数,对吗?我的问题是基于一个字符串。
-
@XavierC.:
link和name的意义是什么。我没有看到您在插入中为link设置值,那么它是如何进入数据的?整个过程闻起来非常糟糕,正确的做法是修改表结构和逻辑,但我不了解数据或其用法,所以我无法提出建议。此外,第谷很棒;-) -
@prodigitalson :抱歉我的错误,我刚刚更新了代码:它是“名称”,而不是“链接”。是的,第谷很棒! ;-)
-
@XavierC.:好吧,那你为什么还需要在
name中添加一个序列号... 为什么不直接使用AUTO_INCREMENT主键并继续插入名称?