搜索结果中的PHP链接无法正常工作

时间:2014-10-21 08:46:42

标签: php mysqli

我有一点问题,我一直在测试变种的数量,但我没有让它工作。 我在搜索结果中有一个链接..(全文搜索工作)

> while($row = mysql_fetch_assoc($query)){
> 
> $id = $row['id'];
> 
> echo '<a href=profile1.php?id= . $row["id"] . >.INFO.</a>';

它显示INFO作为链接,当我点击它时,我跳转到profile1.php,但我没有看到任何结果,它是完全空白页面。我得到的网址是... / profile1.php?id =

这是我的个人资料.php

<?php

$mysqli = new mysqli("", "", "", ""); /* REPLACE NECESSARY DATA */

/* ESTABLISH CONNECTION */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$id=$_GET["id"];

if ($stmt = $mysqli->prepare("SELECT name, brand FROM table WHERE id=?")) {

    $stmt->bind_param("d", $id); /* BIND DATA TO QUERY */

    $stmt->execute(); /* EXECUTE QUERY */

    $stmt->bind_result($name, $brand); /* BIND RESULT TO VARIABLE */

    $stmt->fetch(); /* FETCH DATA */

    printf("%s - %s", $name, $brand); /* ECHO DATA */

    $stmt->close(); /* CLOSE STATEMENT */
}

$mysqli->close();

?>

我希望有人可以帮助我..谢谢!

2 个答案:

答案 0 :(得分:0)

这样做。

 echo "<a href=profile1.php?id=$row[id]>INFO</a>";

或者这个。

echo '<a href=profile1.php?id='.$row['id'].'>INFO</a>'

答案 1 :(得分:-1)

注意:

  • 您已将您的ID分配给变量,因此最好将该变量用于链接。您应该学习如何将变量合并到链接中。
  • 在内部使用变量时,最好使用单个刻度(')。您可以不在查询中使用单一勾号(' IF 您绑定的变量是整数类型。

您的链接应如下所示:

 $id = $row['id'];

 echo '<a href="profile1.php?id='.$id.'" >.INFO.</a>';

您的选择查询应该如下所示(profile1.php):

$sql ="SELECT * FROM table WHERE id='".$_GET["id"]."'";

建议您使用mysqli_*而不是deprecated mysql_* API。请阅读此处以了解有关SQL injections的更多信息。

如果你将它放入mysqli_*准备好的声明中,它看起来像这样(profile1.php):

<?php

  /* RE-ESTABLISH YOUR MYSQL CONNECTION */
  $con = new mysqli("YourHost", "yourUsername", "YourPassword", "YourDB"); /* REPLACE NECESSARY DATA */

  /* CHECK CONNECTION */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  if ($stmt = $con->prepare("SELECT name, brand FROM table WHERE id = ?")){
    $stmt->bind_param("i", $_GET["id"]); /* PARAMETIZE GET ID TO QUERY */  
    $stmt->execute(); /* EXECUTE QUERY */    
    $stmt->bind_result($name, $brand); /* BIND RESULT TO VARIABLE */
    $stmt->fetch(); /* FETCH DATA */
    printf("%s - %s", $name, $brand); /* ECHO DATA */
    $stmt->close(); /* CLOSE STATEMENT */
  }

  $con->close();

?>