-2

get id基本上,当switch 语句中的 id 与数据库中所述行的 id 匹配时,我想显示数据库中的一行。我在这里很困惑,所以让我进一步解释一下。

如果 url 是www.example.com/index.php?id=2 我希望 id 为 2 的行显示在页面上。

这是数据库中内容的示例;

id = 2 name = john id = 3 name = mark

因此,如果 URL 中的 id 等于 2,则显示 id 2 并命名为 john。但如果 URL 中的 id 等于 3,则显示 id 3 和名称标记。

我正在使用 get 函数来执行此操作,但我不确定如何基本上让两个 id 进行比较并从数据库中获取相应的行。

我对 PHP 也很陌生,所以请少说几句!:)


修订 2。

就像我上面说的,我是 PHP 新手,所以很多已经发布的内容让我很困惑。但是当我尝试各种代码时,我得到以下信息;

Warning: mysqli_query() expects at least 2 parameters, 1 given ...
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given

我已经使用了每个代码示例,但似乎我现在正在混合它们。唔。

4

4 回答 4

1

您可能想要这样的东西(数据库连接代码和错误处理未显示):

$id = intval($_GET['id']);
$result = mysqli_query("SELECT id, name FROM table WHERE id=$id");
$row = mysqli_fetch_assoc($result);
echo $row['id']." ".$row['name'];

关于发布的代码:

  1. 你从不使用$result.
  2. 在您的 内部switch,您分配$id$_GET['id'],这将导致include始终使用,除非$_GET['id']是 0。
于 2013-08-12T13:37:50.880 回答
0

您应该将id值传递给您的 sql(通过维护 sql 注入威胁),然后您可以使用 mysql(已弃用)或 mysqli 的 fetch_assoc 函数获取获取的值。

于 2013-08-12T13:37:25.010 回答
0
$id = $_GET['id'];


$result = mysqli_query($mysqli, "SELECT * FROM names where id='$id'"); 

$row = mysqli_fetch_array($result); 
$row_id = $row['id'];

header("www.example.com/index.php?id=$row_id"); 

警告!这只是一个简单的答案。使用此代码有很多危险,因为它很容易受到 SQL 注入攻击。考虑卫生(例如 intval($_GET['id'])。并且通过假设在此代码之前未发送标头信息(甚至是空格!)来使用 header() 函数。

于 2013-08-12T13:46:36.197 回答
0

你应该使用准备好的陈述。这是使用PDO的示例

$stm = $pdo->prepare("SELECT name FROM table WHERE id=?");
$stm->execute(array($_GET['id']));
$name = $stm->fetchColumn();
于 2013-08-12T13:49:21.683 回答