我想为名为spiral url的脚本添加一个编辑按钮,但问题是我无法获取URL ID。这就是我尝试过的:
/** get url id **/
$id = isset($_GET['id']) ? $_GET['id'] : '';
@mysql_query("UPDATE short_urls SET long_url = 'test' WHERE url_id = '".$id."' LIMIT 1");
我做错了什么?
我也通过电子邮件发送了作者和他的回复:
“我建议您在Stackoverflow上发帖 - https://stackoverflow.com/。 我很乐意帮助你,但我不知道你做错了什么。我还在学习PHP。“
答案 0 :(得分:6)
@
运算符来解决错误。 从不抑制错误废弃该代码并使用此代码:
if (!isset($_GET['id'])) {
die("missing query parameter");
}
$id = intval($_GET['id']);
if ($id === '') {
die("Invalid query parameter");
}
$sql = "UPDATE short_urls SET long_url = 'test' WHERE url_id=$id LIMIT 1";
$result = mysql_query($sql);
if ($result === FALSE) {
die("Mysql error: " . mysql_error() . $sql);
}
请注意,我假设id
参数是数字。如果不是,则删除intval()内容。
答案 1 :(得分:2)
确保$_GET['id']
的值实际上有值。您的网址将类似于http://myurl.com/index.phtml?id=yourvalue
。你可以这样做:
print "id=".$_GET['id'];
此外,每当进行查询时,请务必转义可由用户操作的所有变量。如果不这样做,就会让自己陷入SQL注入攻击。
mysql_real_escape_string - http://php.net/manual/en/function.mysql-real-escape-string.php
@mysql_query("UPDATE short_urls SET long_url = 'test' WHERE url_id = '".mysql_real_escape_string($id)."' LIMIT 1");
答案 2 :(得分:0)
如果网址如下:domain.com/something.php?id=65
$_GET['id']
应该等于65
如果没有id
,那么当您尝试访问$_GET['id']
时,您将收到错误。
还尝试删除@
符号(禁止PHP警告)。
你可以向bobby-tables
开放另外(旁注),让一个知道他们在做什么的新开发人员; - )
答案 3 :(得分:0)
你检查了网址
http://www.somewebsite.com?id=56&other_car=test
专门针对“?”在url结束之后还检查所有部件是否被&符号分解。
无法通过
查看所有可用的get数组变量print_r($_GET);