我有一个页面,我试图从URL栏中检索一个值,然后在sql调用中用作参数。但是我遇到了一些问题。
网址为XXXXXXXXXX.php?mid = 314
我的代码顶部有
$mid = (int)trim($_GET['mid']," "); // Method A: This version does not work
$mid = 314; // Method B: This version does work
$mission = $db->getTableInfoForMission($mid);
// This is the sql call that works for Method B and fails for Method A.
我输出了$ mid的值,它似乎是314,是否有我遗漏的东西?
由于
编辑*
尝试// var_dump($ mid);死();对于这两种情况,我得到int(314),但仍然有一种方法失败而另一种方法没有。我得到方法A
的SQL语法失败答案 0 :(得分:1)
尝试删除(int)
强制转换并从trim()
函数中删除第二个参数,因为trim()
函数默认删除任何空格
$mid = trim($_GET['mid']);
答案 1 :(得分:1)
不一定是您特定问题的答案,但有价值的资源是查看$_SERVER['REQUEST_URI']
。这将为您提供顶级域之后的所有内容,并通过一些字符串操作,您可以做一些非常有用的东西。
答案 2 :(得分:1)
我甚至不打扰trim
。一个简单的
if (!isset($_GET['mid'])) {
throw new RuntimeException('Required query param "mid" is missing');
}
$mid = (int) $_GET['mid'];
应该就是您所需要的一切。
还要确保在开发环境(php.ini
)
error_reporting = E_ALL
display_errors = On
答案 3 :(得分:0)
如果您的网址为XXXXXXXXXX.php?mid=314
,则在调用mid
时,$_GET
的XXXXXXXXXX.php
索引将设置为314,除非您的网络服务器做鬼鬼祟祟的事......
$mid = trim($_GET['mid']); // No need to specify " ", that's natural behaviour.
考虑使用is_integer($mid)
检查类型,并确保 nothing 绝对干扰$mid
的值。以下调试调用也可能对您有所帮助:
var_dump($mid); die();
- 在分配$mid
。var_dump($_GET); die();
- 一开始。