php - "UPDATE WHERE NOT LIKE? "

如果字符串不存在,我正在尝试将字符串附加到字段:

mysql_query("UPDATE gals4 SET tags = CONCAT(tags, '$instag') WHERE id = '$instagnum' AND tags NOT LIKE '$instag'");

这只是附加到“标签”,无论它是否存在于现场。我在这里做错了什么?

最佳答案

要回答您的直接问题,您必须将字符 % 放在匹配字符串的开头和结尾:

 "AND tags NOT LIKE '%$instag%'"

但是,您应该意识到这是一种糟糕的在 SQL 数据库中存储数据的方式。至少存在三个问题:

  1. 如果您有嵌入其他标签(例如“cat”和“scat”)的标签,除非您编写非常复杂的基于逗号的搜索,否则您将找到错误的记录。
  2. 这些搜索永远无法编入索引,因此随着记录数量的增加会变得非常缓慢。
  3. 您无法根据允许的标签列表验证所使用的标签,无法保证数据库中只有允许的标签,也无法轻松地提供现有或允许的标签列表。

正确的解决方案是在您的数据库中添加至少一个表,称为 gals_tags,包含列 galid 和 tag。将每个标签一条记录插入到该表中。如果一个女孩有多个标签,则为每个标签添加一条记录。

https://stackoverflow.com/questions/12712440/

相关文章:

python - 了解 z3 模型

php - nginx + proxy pas - 504 网关超时,1 分钟 30 秒后超时。试过

perl - 在 Perl 中使用 'printf' 格式化输出

cuda - 内核中的新运算符..奇怪的行为

calendar - 排序 ekcalendar 或 ekreminder

artificial-intelligence - PACMAN:吃掉所有点的捷径

database - SQLite 数据库作为文本文件?

python - 在网格管理器中使用带有 Tkinter 的输入框?

php - 在选定的时间后停止执行循环

povray - 你如何在 POV-Ray 中将图像包裹在一个盒子周围?