Mysql LIKE 显示未知字符

Mysql LIKE show unknown characters

我试图从 mysql table.

中过滤一些数据
<?php
include ("connection.php");
$name = "cable";
$sql = "SELECT  * FROM stock WHERE item LIKE '%$name%'";
?>
<a target="_blank" href="test2.php?link=<?php echo $sql; ?>" >click</a>

我尝试使用下一页的 $_GET[link] 获取 sql 语句。 (test2.php)。这是来自 TEST2.PHP

的代码
<?php    
include ("connection.php");   
$link = $_GET['link'];
echo $link;

然后 echo $link 显示一个不同的值。它不显示 "cable"。相反,它显示

SELECT * FROM stock WHERE item LIKE 'Êble%'

你能告诉我为什么 CABLE 变成了 Êble 吗?

在 URL 中传递 SQL 语句不是一个好主意。请参考以下link以供参考, refer this

如果你想通过URL传递特殊字符,你可以使用,

urlencode($url);

正如 Ayyanar 所说,是的,在 URL 中传递 SQL query 不是一个好主意。

但是如果你仍然想实现它,你可以这样做:

TEST1.PHP

<?php
$name = "cable";
$sql = "SELECT  * FROM stock WHERE item LIKE '%--$name--%'";
?>
<a target="_blank" href="test2.php?link=<?php echo $sql; ?>" >click</a>

TEST2.PHP

<?php
$link = $_GET['link'];    
$link = str_replace(
  array('%--', '--%'), 
  array('%', '%'), 
  $link
);
echo $link;
?>