gpt4 book ai didi

php - 在mysql和PHP中检查一个字段是否有属性 `UNIQUE`

转载 作者:可可西里 更新时间:2023-11-01 06:28:41 33 4
gpt4 key购买 nike

如何检查表中的字段是否设置为UNIQUE

例如,我有一个名为 users 的表,其中一个字段 email 设置为 UNIQUE 和一个字段 picture未设置为 UNIQUE,我想在选择之前检查该字段是否设置为 UNIQUE 如果没有,则不要执行 SELECT

我尝试SELECT然后计算返回的行数,如果超过1那么它不是UNIQUE

"SELECT * FROM table WHERE email='$email'"
//...some mysql php line later
if($count > 1){
//return nothing
}

但是效率不高,没有重复怎么办。

PHP 中检查字段是否设置为 UNIQUE 的最佳方法是什么?

编辑:没有重复并不意味着它有 UNIQUE 属性

最佳答案

来自documentation of SHOW INDEX (由@diEcho 发现):

SHOW INDEX returns the following fields:

Non_unique -- 0 if the index cannot contain duplicates, 1 if it can.

Column_name -- The column name.

尝试:

SHOW INDEXES
FROM $tablename
WHERE Column_name='$field'
AND NOT Non_unique

请注意,这里假设不存在跨多列的 UNIQUE 索引。如果可以,那么您可能希望使用子查询排除它们。

另请注意,禁用的索引也显示在此查询中(Comment 列的文档中提到了禁用索引的可能性)。似乎没有反射(reflect)这一点的列,因此如果您禁用了索引,则可能需要解析 Comment 列。

无需将 Non_unique 与数字进行比较 - MySQL uses 0 and 1 for booleans anyways

关于php - 在mysql和PHP中检查一个字段是否有属性 `UNIQUE`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049407/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com