我尝试在数据库表中写入,但是在我需要检查列中不存在相同的变量之前。但是我的代码不能正确用于空表。如何修复它,使其在空表及以后的表中开始起作用?
try
{
//$sql = "SELECT id FROM ".$table." WHERE ".$col." = :value";
$sql = "SELECT id FROM column WHERE name = :value";
$s = $pdo->prepare($sql);
$s->bindValue(':value', $value);
$relut = $s->execute();
verifyVarDump($relut, '$relut: ');
verifyVarDump($s, '$s: ');
foreach($s as $row)
{
echo ' :OK: ';
if(is_int($row['id']))
{
continue;
}
else
{
$valuesUnique[] = $value;
}
}
}
catch(PDOException $e)
{
echo 'Не удалось читать БД';
exit();
}
}
答案 0 :(得分:1)
您需要的是Tim的注释,但是您可能不知道“约束”是什么,所以这里是步骤(实际上,您正在做的事情要简单得多)
1)在表定义中:添加主键索引或唯一索引。一点光读(https://dev.mysql.com/doc/refman/8.0/en/constraint-primary-key.html)。
这意味着,如果您尝试添加具有相同值的另一个条目,它将失败并抛出错误。然后您就可以利用这个优势了。
2)然后,在新行中添加“ INSERT INTO”,如果该值在“唯一”列中存在,它将失败,否则将失败。简单。一个查询就可以了:)
您还可以执行另外两项技巧:
a)您可以执行“ REPLACE INTO”操作,并说“如果唯一键不存在,请添加新行;如果确实存在,则先删除该行,然后添加我的新键”。
b)您可以执行“ INSERT INTO ..... ON DUPLICATE KEY UPDATE”,并显示“如果唯一键不存在,请添加新行;如果确实存在,则使用下半年的更新。
另外两个单行查询可以满足您的所有需求!
祝你好运。