我正在尝试从数据库中删除一行,并且从外部 API 生成的 aid 包含数字。
例如,这是援助的:
16RYR3w
15LSPf1
10sLK3
5PlsKs
这就是我想要实现的目标:
$uid = 1;
$aid = '15LSPf1';
DELETE FROM favorites WHERE uid='". $uid ."' AND aid LIKE '". $aid ."'
这行不通。我做错了什么?我无法选择更改 id,因为数字是随机顺序的。
这就是您要找的:
$aid = stripslashes($_GET['aid']);
$query="DELETE FROM favorites WHERE uid='". $uid ."' AND aid LIKE '%". $aid ."%'";
请注意,
LIKE
仅 比 REGEXP
快 10 倍。有关测试的更多信息可以在这里找到:http://thingsilearn.wordpress.com/2008/02/28/mysql-query-speed-regexp-vs-like/
如果您尝试删除第一个 aid
字符为数字的
any行,请使用正则表达式:
DELETE FROM favorites WHERE uid=whatever AND aid RLIKE '^[0-9]'
上面的正则表达式检查“字符串开头”(即
^
),后跟“任意数字”(即 [0-9]
)。
你有前导零吗?
如果没有,那么可能是这样的:-
DELETE FROM favorites
WHERE CAST( i AS UNSIGNED ) > 0
编辑 - 如果列都是字符格式,则删除最初拥有的特定记录将起作用,但不确定为什么要使用 LIKE。如果 uid 是数字则:-
$uid = 1;
$aid = '15LSPf1';
DELETE FROM favorites WHERE uid=". $uid ." AND aid = '". $aid ."'
应该可以正常工作
试试这个:
$uid = 1;
$aid = 15;
'DELETE FROM favorites WHERE uid="'.$uid.'" AND aid REGEXP "^'.$aid.'"'