如何在PHP中获得url ID ?(对于mysql_query UPDATE)


How to get url ID in PHP? (for mysql_query UPDATE)

我想为一个名为螺旋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。"

    你很容易受到SQL注入攻击。
  1. 您正在抑制@操作符的错误。永远不要抑制错误
  2. 你没有检查mysql_query()的返回值,它在失败时返回布尔值FALSE。

去掉这些代码,使用下面的代码:

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参数是数字。如果不是,则删除interval()。

确保$_GET['id']的值实际上有一个值。您的URL看起来类似于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");

如果url是这样:domain.com/something.php?id=65

$_GET['id']应该等于65

如果没有id,那么当你试图访问$_GET['id']时,你会得到一个错误。

也尝试删除@符号(抑制PHP警告)。

And you are waaway to bobby-tables

另外(旁注),找一个知道自己在做什么的新开发人员;-)

你检查过网址了吗

http://www.somewebsite.com?id=56& other_car =测试

特别针对url结束后的"?",并检查所有部分是否被"&"分隔。

如果不能通过

查看所有可用的get数组变量
print_r($_GET);