我有一个名为:“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'
(虽然表存在)
当我 echo $actiontable 时,我得到 m & m (12-11-15 at 11:11)-Ca:16:20:06-ai,这正是我的表名,但查询不起作用。当我手动输入相同的回显值而不是变量时,查询有效。这可能是什么原因?
注意:相同的查询适用于不包含“&”的表名
最佳答案
我做了一些测试。 为了获取正确的字符串,我使用了:
$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"
尝试一下。
关于php - 变量在 php 中的 mysql 查询内无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33840968/