【问题标题】:get one variable out of database with PHP使用 PHP 从数据库中获取一个变量
【发布时间】:2013-05-15 19:33:17
【问题描述】:

好吧,显然我是个初学者。

我在这里尝试做的可能很简单。 我试图让我的数据库的所有字段都在我的网站上回显。所以我用它来只显示基本细节:

<?php
 // Make a MySQL Connection
 mysql_connect("localhost", "root", "") or die(mysql_error());
 mysql_select_db("crnew") or die(mysql_error());

 $result = mysql_query("SELECT * FROM releases") 
 or die(mysql_error());  

 while($row = mysql_fetch_array( $result )
 ) {
      // Print out the contents of each row into a table

echo '<ul class="releaselist">';
echo '<li>';
echo $row['products_name'];
echo '</li>';
echo '<li>';
echo $row['products_title']; 
echo '</li>';
echo '<li>';
echo '<a href="detailed.php?products_id="><img class="releaseimg"      src="'.$row['products_image'].'"></a>';
echo '</li>';
echo '</ul>';


 } 

 ?>

到目前为止一切正常。 我想要做的是让我的 URL 在我单击单个图像时看起来像这样。

www.mywebsite.com/detailed.php?id=1

并在表格 RELEASES 中显示所有可用的内容

我这样做的方式不起作用是:

 <?php

 mysql_connect("localhost", "root", "") or die(mysql_error());
 mysql_select_db("crnew") or die(mysql_error());

  $result = mysql_query("SELECT * FROM releases
                    WHERE products_id=products_id") 
 or die(mysql_error());  

 if ($result){
$row = mysql_fetch_array($result);

echo $_GET['products_id'];  

}

?>

【问题讨论】:

  • 你需要一个表格来做这个
  • 访问该变量的方式是使用 GET:$_GET['id']
  • @Fabio - 没有芦苇。只需解析 $_GET 并将其作为参数传递给查询
  • @karthikr 你的意思是直接在锚 url 中传递 id 吗?
  • where products_id=products_id 只是评估为真并为您提供所有行。试试'select * from releases where products_id = ' . intval($_GET['id'])。选择前请务必检查是否设置了$_GET['id']

标签: php mysql database url get


【解决方案1】:

如果我对您的理解正确,您的第一个脚本需要更新为:

echo '<a href="detailed.php?id=' . $row['products_id'] . '><img class="releaseimg"      src="'.$row['products_image'].'"></a>';

这会将您的图片变成链接。此时您的第二个脚本应该可以使用:

_GET['id']

检索此值并在您的查询中使用它。因此:

$result = mysql_query("SELECT * FROM releases
                    WHERE products_id=" . mysql_real_escape_string($_GET['id']));

现在,如果您真的想在 URL 中使用 products_id 而不是 id,只需在第一个脚本的 echo 行中将其 'id' 更改为 products_id,并且所有 $_GET 在第二个脚本中使用。

【讨论】:

  • 好的,但它只显示 products_id 这可能是正常的,因为我只有这个:echo $_GET['id']; 但是如果我想显示所有信息,例如 products_name,为什么要显示:@987654325 @ 不起作用?
  • 好的,我让它工作了。我用echo $row['products_name'];替换了echo $_GET['products_name'];
【解决方案2】:

尝试更改此行:

echo '<a href="detailed.php?products_id="><img class="releaseimg"      src="'.$row['products_image'].'"></a>';

到这个:

echo "<a href='detailed.php?products_id=".$row['products_id']."'><img class='releaseimg'      src='".$row['products_image']."'></a>";

【讨论】:

    【解决方案3】:

    嗯,尝试使用 $row['products_id'] 而不是 $_GET['products_id']; $_GET 在访问网页时使用,$row['products_image'] 起作用的原因是因为您访问了数据库结果。

    【讨论】:

      【解决方案4】:

      你放错了products_id的使用...

      你的代码应该是这样的......

       <?php
      
       mysql_connect("localhost", "root", "") or die(mysql_error());
       mysql_select_db("crnew") or die(mysql_error());
      
        $result = mysql_query("SELECT * FROM releases
                          WHERE products_id='".intval($_GET['id'])."'") 
       or die(mysql_error());  
      
       if ($result){
      $row = mysql_fetch_array($result);
      
      echo $row['products_id'];  
      
      }
      
      ?>
      

      【讨论】:

      • 他的代码不应该是那样的,你让他对 SQL 注入攻击敞开了大门。教新程序员不是一个好习惯。
      • 永远不要相信用户输入。您至少应该添加 intval() 以避免查询出现问题。
      • 它只是显示在哪里使用$_GET 值。但你没事。 =)
      • 很抱歉错过了这些家伙...只是想告诉他哪里出了问题...已按照您的输入并编辑了代码。
      • intval 不是通用的转义策略。请使用mysql_real_escape_string 并正确操作。
      猜你喜欢
      • 2016-06-15
      • 2018-06-30
      • 2018-10-24
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多