【问题标题】:How to retrieve details for a particular id from MYSQL database如何从 MYSQL 数据库中检索特定 ID 的详细信息
【发布时间】:2014-03-19 03:56:39
【问题描述】:

根据 URL 中 id 的值从数据库中获取数据。

$id= $_GET['id'];
$strSQL = "SELECT * FROM people WHERE id='$id'";
$rs = mysql_query($strSQL);

这是有效的,但它显示的是一个空白页。

我该如何解决这个问题?

【问题讨论】:

  • 您在该页面上还有其他内容吗?可能是导致空白页的 php 错误。
  • 您需要使用循环来获取数据,然后回显它。 (那么,谁愿意这样做)?
  • ^--« 请不要那样做。将其(代码)发布在您的问题中,而不是“评论”框中。 @user3435833
  • 我想你已经开始学习php中的mysql扩展了。这是升级的正确时机,因为 mysql() 函数将很快在以后的 PHP 版本中被弃用。所以最好从 PHP 中的 mysqli 或 PDO 开始。 Linkz在@tchow002提供的答案中给出

标签: php mysql sql database


【解决方案1】:

正如我在原始评论中提到的那样:

“您需要使用循环来获取数据,然后回显它。”

别人已经给你例子了,不要用你现在的方法,这里是一个PDO方法:

<?php
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';

$id = $_GET['id'];

try {

$pdo= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     exit( $e->getMessage() );
}


try {

$stmt = $pdo->prepare('SELECT * FROM people WHERE id = :id');
$stmt->bindParam(':id', $id);
$stmt->execute();

} catch (PDOException $e) {
     echo $e->getMessage();
}

/* optional method
foreach($stmt as $row) {
      echo $row['id'] . ' ' . $row['name'] . ' ' . $row['email'];
}
*/

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  $id = $row['id'];
  $n = $row['name'];
  $e = $row['email'];
}

echo $id;
echo "<br>";
echo $n;
echo "<br>";
echo $e;

?>

另一种 PDO 方法:

<?php
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';

$id = $_GET['id'];

// $id= 4; // my own test id number

try {

$pdo= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
     exit( $e->getMessage() );
}

try {
     $sql = "SELECT * FROM people WHERE id='$id'";
     $results = $pdo->query($sql);

} catch (PDOException $e) {
     echo $e->getMessage();
}

/* optional method
foreach($results as $row) {
      echo $row['id'] . ' ' . $row['name'] . ' ' . $row['email'];
}
*/

while ($row = $results->fetch(PDO::FETCH_ASSOC)) {
  $id = $row['id'];
  $n = $row['name'];
  $e = $row['email'];
}

echo $id;
echo "<br>";
echo $n;
echo "<br>";
echo $e;

?>

【讨论】:

  • 不客气,很高兴我能帮上忙。 @user3435833 如果您觉得这回答了您的问题,请考虑单击白色(灰色轮廓)复选标记/勾选直到它变为绿色,以防您不知道 StackOverflow 系统的工作原理:) 这会正确关闭问题。干杯。
【解决方案2】:

[1]。 mysql_* 已弃用。

[2]。您的代码很容易受到 sql 注入的影响。用mysql_real_escape_string($_GET['id']) 清理$_GET['id'](如果你更新到mysqli

[3]。结果作为资源返回。循环遍历它:

$rs = mysql_query($strSQL);
while($r = mysql_fetch_array($rs)) { echo $r['someField']; }

【讨论】:

    【解决方案3】:

    我不推荐使用 mysql_query,因为它已被弃用。

    此扩展自 PHP 5.5.0 起已弃用,将来将被删除。

    我建议使用 MySQLiPDO

    但如果您坚持使用mysql_ 函数,您可以使用mysql_fetch_assoc 来获取以字段名称为键的关联数组中返回的详细信息。

    $id= $_GET['id'];
    $strSQL = "SELECT * FROM people WHERE id='$id'";
    $rs = mysql_query($strSQL);
    if (!$rs) {
        echo 'Could not run query: ' . mysql_error(); //A bit of error checking
        exit;
    }
    
    $row = mysql_fetch_assoc($rs);
    
    if($row){
      echo $row['field']; // An array key'd on the table's field names is returned
    }
    

    如果您的people 表中的字段名为first_name,则该值将存储在返回的关联数组中的$row['first_name'] 中。

    我假设id 是一个唯一字段,并且您最多期望返回一行。 如果不是这种情况,请使用带有条件while($row = mysql_fetch_assoc($rs)) 的循环来遍历所有返回的行。

    【讨论】:

      【解决方案4】:

      您必须获取结果。

      试试这样:

      $id= $_GET['id'];
      $strSQL = "SELECT * FROM people WHERE id='$id'";
      $rs = mysql_query($strSQL);
      while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
          echo $row['id']; //$row is an array of each row of your table
      }
      

      see details

      mysql_* 函数已弃用,您应该切换到 mysqli_*pdo

      【讨论】:

        【解决方案5】:
            $id= $_GET['id'];
            $strSQL = "SELECT * FROM people WHERE id='$id'";
            $rs = mysql_query($strSQL);
            $row = mysql_fetch_array($rs);
            $num_rows = mysql_num_rows($row);
              if($num > 0)
              {  
                 foreach($row as $r) 
                 {
                 echo $r;          
                 }
              }
              else
              {
                 echo "No rows "
              }
        

        此代码将显示值。 注意:mysql_query 将在以后的 PHP 版本中被弃用。所以最好从 PHP 中的 mysqli 或 PDO 开始。

        【讨论】:

          猜你喜欢
          • 2018-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多