我使用了删除代码的特殊字符,但我无法从此代码返回。我该如何从此代码返回?我的代码
$removeme = array("=", "+", " ", ",", "-", "_", "$", "^", "&");
$title = str_replace($removeme , "-", $row['title']);
我在url链接中使用了以下内容。
href="view-items-details?ID=<?php echo $row['sl'];?>&show=<?php echo $title;?>"
使用GET方法,我将其称为以下内容。
$id=$_GET['ID'];
$id2=$_GET['show'];
$removeme = array("=", "+", " ", ",", "-", "_", "$", "^", "&");
$id1 = str_replace("-", $id2, $removeme);
我的数据库查询
$SQL="select * from tb_classified where sl='$id' and title='$id1'";
$obj->sql($SQL);
while($row = mysql_fetch_array($obj->result))
但我的帖子没有出现。谁能看到我错了什么?
答案 0 :(得分:1)
你在这里遇到了一些问题:
$id=$_GET['ID'];
$id2=$_GET['show'];
$removeme = array("=", "+", " ", ",", "-", "_", "$", "^", "&");
$id1 = str_replace("-", $id2, $removeme);
$id1
将是一个数组,因为“主题”$removeme
是一个数组。基本上,它将等于['=', '+', ' ', ',', "$id2", '_', '$', '^', '&']
(将'-'
替换为每个元素的$id2
的结果)。数组字符串为"Array"
。
稍微接近正确的是$id1 = str_replace("-", $removeme, $id2);
- 但这个想法仍有一个严重的缺陷会阻止它正常工作。
我不确定你在这里想要完成什么。但是当你将多个字符转换成同一个字符时,就会丢失信息。如果没有原始字符串,您就不能“取消替换”它们 - 让您这样做的信息现在已经消失了。这些字符现在是破折号,不记得它们曾经是什么。
(这就是为什么我建议不以这种方式修改数据。尽可能编码或转义数据更好......而且几乎总是可行的。)
(此部分假设您正在尝试查找title
一旦清理后与$_GET['show']
匹配的行。)
在短期内,您可以将短划线更改为下划线并说出title like '$id1'
而不是title = '$id1'
。与like
一起使用时,下划线是一个通配符,因此只要其他字符匹配,您就会在这些点中找到任何带有任何字符的标题。但是当然这不是精确匹配的特定性,也会让MySQL难以使用title
上的任何索引。
或者,如果sl
实际上是表格参数名称所暗示的ID,那么您可能根本不需要标题来识别记录......