MySQL:当 id 首字母为数字时从数据库中删除

问题描述 投票:0回答:4

我正在尝试从数据库中删除一行,并且从外部 API 生成的 aid 包含数字。

例如,这是援助的:

16RYR3w
15LSPf1
10sLK3
5PlsKs

这就是我想要实现的目标:

$uid = 1;
$aid = '15LSPf1';

DELETE FROM favorites WHERE uid='". $uid ."' AND aid LIKE '". $aid ."'

这行不通。我做错了什么?我无法选择更改 id,因为数字是随机顺序的。

mysql delete-row
4个回答
1
投票

这就是您要找的:

$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/


0
投票

如果您尝试删除第一个 aid 字符为数字的

any
行,请使用正则表达式:

DELETE FROM favorites WHERE uid=whatever AND aid RLIKE '^[0-9]'

上面的正则表达式检查“字符串开头”(即

^
),后跟“任意数字”(即
[0-9]
)。


0
投票

你有前导零吗?

如果没有,那么可能是这样的:-

DELETE FROM favorites
WHERE CAST( i AS UNSIGNED ) > 0

编辑 - 如果列都是字符格式,则删除最初拥有的特定记录将起作用,但不确定为什么要使用 LIKE。如果 uid 是数字则:-

$uid = 1;
$aid = '15LSPf1';

DELETE FROM favorites WHERE uid=". $uid ." AND aid = '". $aid ."'

应该可以正常工作


0
投票

试试这个:

$uid = 1;
$aid = 15;

'DELETE FROM favorites WHERE uid="'.$uid.'" AND aid REGEXP "^'.$aid.'"'
© www.soinside.com 2019 - 2024. All rights reserved.