【问题标题】:How to get ID from another file in php?如何从php中的另一个文件获取ID?
【发布时间】:2012-05-05 03:24:36
【问题描述】:

我要在我的网站上制作编辑菜单。所以我将页面从产品引导到编辑页面。我感到困惑的是如何从产品页面获取产品 ID 以在编辑页面中使用? 这是我在产品中的代码

<?php $query= "SELECT * FROM game";
$rs = mysql_query($query);
while($data = mysql_fetch_array($rs)) { ?>
<div class="gameBox">
    <div style="margin:5px;">
        <?php echo "<image src=\"images/".$data['gameId'].".png\" alt=\"gameImage\" </image>"?>
        <div class="cleaner"></div>
        <div class="myLabel">Name</div><div>: <?php echo $data['gameName'];?></div>
        <div class="myLabel">Developer</div><div>: <?php echo $data['gameDeveloper']; ?></div>
        <div class="myLabel">Price</div><div>: $ <?php echo $data['gamePrice']; ?></div>
        <br />
        <a href="edit.php" <?php $id=$data['gameId'];?>><input type="button" value="Edit"/></a>
        <a href="<!-- Delete -->"><input type="button" value="Delete"/></a>
    </div>
</div>
<?php } ?>

这是我在编辑页面中的代码

<?php include("connect.php");
$id[0] = $_REQUEST['id'];
$query = "SELECT * FROM game WHERE gameId=".$id."";
$rs = mysql_query($query);
while($data = mysql_fetch_array($rs)) { ?>
    <form action="doUpdate.php" method="post">
        <?php echo "<image src=\"images/".$id.".png\" alt=\"gameImage\" </image>"?>
        <div class="cleaner"></div>
        <div class="myLabel">Name</div><div>: <input type="text" value="<?php echo $data['gameName'];?>" id="gameName" name="gameName"/></div>
        <div class="myLabel">Developer</div><div>: <input type="text" value="<?php echo $data['gameDeveloper'];?>" id="gameDeveloper" name="gameDeveloper"/></div>
        <div class="myLabel">Price</div><div>: <input type="text" value="<?php echo $data['gamePrice'];?>" id="gamePrice" name="gamePrice"/></div>
        <br/>
        <div id="txtError">
        <!--error message here-->
        </div>
        <input type="submit" value="Submit"/>
        <a href="product.php"><input type="button" value="Cancel"/></span></a>
<?php } ?>

当我尝试访问编辑页面时,出现错误提示

"Undefined index:$id[0] = $_REQUEST['id'];" 

在编辑页面中。 谁能帮帮我?

【问题讨论】:

  • 您的脚本易受 SQL 注入攻击。至少,调用 intval() 将字符串 $id 转换为整数:$id = intval($_REQUEST['id']);
  • @Michael:我通常会做类似$id = (int)$_GET[...] 的事情——知道哪个更好吗?一样吗?
  • @jedwards 它们基本上是等价的。如果需要,intval() 作为基数选项。确实,最好检查该事物是否为预期的整数,如果不是,则根本不要对数据库执行任何操作。
  • @jedwards 许多 PHP 程序员只会接受脚本接收到的值而不检查类型和边界,但这是一种糟糕的做法。

标签: php edit show


【解决方案1】:

您似乎混淆了&lt;a href...&gt;s 中的两种在页面、表单和查询字符串之间传递数据的方法。

表格

数据在&lt;input&gt;-type 元素(或朋友)和&lt;form...&gt; 标签内。

例如

<form action="handler.php">
    <input type="text" name="var1" />
    <input type="text" name="var2" />
    <input type="submit">
</form>

通常通过 POST 传递,在 PHP 中通过 $_POST 访问。

例如,上面引用的文本框中的值可以通过以下方式访问:

<?php
echo $_POST['var1'];  // First text box
echo $_POST['var2'];  // Second text box

链接

&lt;a href...&gt;中作为查询字符串传递,例如:

<a href="http://www.yoursite.com/index.php?var1=foo&var2=bar">Click Me</a>

通常通过 GET 传递并在 PHP 中通过$_GET 访问。

例如,上面提供的查询字符串中的值将通过类似

的方式访问
<?php
echo $_GET['var1'];  // "foo"
echo $_GET['var2'];  // "bar"

因此,在这种情况下,您似乎正在超链接一个输入按钮——这不是通常的处理方式,但您可以通过更改它来修复它:

<a href="edit.php" <?php $id=$data['gameId'];?>><input type="button" value="Edit"/></a>

给,这个

<a href="edit.php?id=<?php echo $data['gameId'];?>"><input type="button" value="Edit"/></a>

然后将edit.php中的变量引用为$_GET['id']

但既然你知道它将是一个整数,没有别的,就像:

$id = (int)$_GET['id'];

卫生条件是否足够好(至少对于那个变量而言)。

最后,我注意到您将变量分配给$id[0],但随后引用$id。将变量分配给$id[0] 与将其分配给$id 不同,因为$id 在前者中是一个数组,而在后者中是一个整数。在我看来,您可以放弃[0] w.r.t。 $id 在你的edit.php中

【讨论】:

  • 我使用了 $id = $_REQUEST['id'];不包括数组,它也可以工作:)。谢谢老兄
  • 没问题,但请阅读我关于清理倒数第二段中的变量的观点或@Michael 在他的评论中的观点。
  • 为什么在编辑中仍然出错,虽然我使用了 $id= (int)$_GET['id'];在edit.php?它说未定义的索引
  • 这似乎意味着您的查询字符串有点偏离 - 您可以粘贴您发送到的 edit.php 页面的完整 url 吗? (你可以去掉域名,我只需要edit.php之后的所有内容)
  • 另外,如果$id = $_REQUEST['id']; 有效,你可以考虑$id = (int)$_REQUEST['id'];
【解决方案2】:

可以通过查询字符串

<a href="edit.php?<?php $id=$data['gameId'];?>>

在这种情况下,您的 PHP 代码将更改为

$id[0] = $_SERVER['QUERY_STRING'];

【讨论】:

  • 你的意思是$_GET,没有$_QUERYSTRING
【解决方案3】:

将 id 作为参数添加到您的编辑网址:

<a href="edit.php?id=<?php echo $data['gameId'];?>"><input type="button" value="Edit"/></a>

也在你的edit.php的顶部:

$id = $_REQUEST['id'];

【讨论】:

  • @ShaikhFarooque Yes it will,尽管仍然建议明确使用$_GET..
  • 我认为&lt;?php ... ?&gt; 标签内的赋值是错字。
  • @ShaikhFarooque $_REQUEST 用于 POST 和 GET :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多