我正在尝试从表中删除行…我正在使用以下代码:
$query = "Delete from usertour where tourID = $idnum and name LIKE '%$session%' ";
如果idnum和session是正确的,它也不会删除行
我尝试以这种方式在phpmyadmin中执行相同的查询:
Delete from usertour where tourID = 1 and name LIKE '%test@hotmail.com%'
当我这样执行时,它工作了…问题可能出在“%$session%”部分,我试图修复,但无法修复。
有什么帮助吗?
这里是一些数据库…我连接到右边的数据库,因为除了这个以外,我在几个地方使用php和mysql…问题只是在“%$session%”中…其他一切都很好,它执行查询,但不能匹配名称字段。
如果我输出$idnum、$session和$query变量,我会得到:
4条答案
按热度按时间mhd8tkvw1#
尝试根据sql驱动程序转义会话变量。mysql示例如下。
gcmastyq2#
php会把你的句子转换成mysql,所以你可以试试:$query=“delete from usertour where tourid=$idnum,name like%{$session}%”;
wxclj1h53#
唯一可靠的方法是准备好的陈述。根据所使用的数据库驱动程序层的不同,它们的播放方式略有不同(
mysqli
vs pdo),但通常看起来像:然后在执行该查询之前将两个值绑定到上。请注意
name=?
在这里使用是因为LIKE
是为了接近你不想要的情况。如果使用LIKE
然后删除name@example.com
以及name@example.com.au
,两个完全不同的电子邮件地址。如果您在电子邮件字段中使用空格
LIKE
要忽略这是一个肮脏的数据问题,你必须清理你的数据。不要让情况更糟的分层在黑客,如LIKE
.如果出于任何原因在输入中有空格,请在使用
trim
功能:在执行查询时,您将对
mysqli
:对于pdo:
i2byvkas4#
您已经根据图片向$session变量添加了空格。
另外,根据您的示例,您不需要使用like和通配符。