[英]How can I do an inverse LIKE on SQL on php?
我想 select sql 和 php 中的数据库中的一个值。 因此,我想要 select 的值是我与之比较的值的一部分。
有两张表:一张称为事件,另一张称为每周。 在表事件中,有一列叫做名称,即每个事件的名称。 Weekly 还有一个名为 name 的列,它是每周的名称。 所以,我想从每周比较两个名称中获取 id。 但是事件的名称可以在名称之前和/或之后有一些东西。 例如:
Weekly name: Monday
Weekly id: 1
Event: NJK Monday 3
Another example:
Weekly name: Tuesday
Weekly id: 2
Event: Tuesday ks
我试过用 LIKE 条件来做,但我没有得到我想要的结果。
$stmt = $conn->prepare("UPDATE db.event SET weeklyid ="
. " (SELECT id FROM db.weekly WHERE %name%"
. " LIKE 'NJK Monday 3') WHERE name = :name;");
$stmt->bindValue('name', $event->name);
$stmt->execute();
所以,它就像一个反向的 LIKE。 我想从上面的代码中得到的结果是 select 语句返回 1。
您可以使用CONCAT()
在属性周围添加%
符号,如下所示
SELECT id FROM db.weekly WHERE 'NJK Monday 3' LIKE CONCAT('%', name, '%')
我不确定它如何与命名占位符一起使用,您是否会使用?
占位符,您应该添加%
来执行不查询的值:
错误的
$stmt = $conn->prepare('SELECT id FROM db.weekly WHERE name LIKE %?%');
$stmt->execute(['NJK Monday 3']);
好的
$stmt = $conn->prepare('SELECT id FROM db.weekly WHERE name LIKE ?');
$stmt->execute(['%NJK Monday 3%']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.