我有一张名为:" m& m(12-11-15 at 11:11)-Ca:16:20:06-ai"我的SQL查询是:
$queryac="SELECT *
FROM `$actiontable`
WHERE (Assignedto LIKE '%$username%'
OR Assignedby='$username')";
变量的PHP代码是:
$table=$_GET['id'];
$actiontable=$table.'-ai';
id=m+%26amp%3B+m+%2812-11-15+at+11%3A11%29-Ca%3A16%3A20%3A06
(我已尝试过urldecode($ _ GET [' id']),但它也不起作用)
回音查询是:
SELECT * FROM `m & m (12-11-15 at 11:11)-Ca:16:20:06-ai` WHERE (Assignedto LIKE '%mariummalik22@gmail.com%' OR Assignedby='mariummalik22@gmail.com')
来自mysql的表名:m& m(12-11-15 at 11:11)-Ca:16:20:06-ai
我得到的错误:
Table 'alsonsrn_actionitems.m & m (12-11-15 at 11:11)-Ca:16:20:06-ai'
(虽然表存在)
当我回应$ actiontable时,我得到m& m(12-11-15 at 11:11)-Ca:16:20:06-ai,这正是我的表名,但查询不起作用。当我手动输入相同的回显值而不是查询的变量时。可能是什么原因?
注意:相同的查询适用于不包含"&"
的表名答案 0 :(得分:1)
我做了一些测试。 为了得到正确的字符串,我使用了:
$id = 'm+%26amp%3B+m+%2812-11-15+at+11%3A11%29-Ca%3A16%3A20%3A06';
var_dump( html_entity_decode( urldecode( $id ) ) );
输出是:
string(37)" m& m(12-11-15 at 11:11)-Ca:16:20:06"
试试吧。