如何从表中找出特定的行ID?

时间:2013-11-11 09:56:33

标签: php mysql

你好,我正在研究一个项目(我是一个新手),这是项目的进展方式......

我创建了创建用户页面,用户输入凭据并点击创建帐户

重定向到另一个页面(process.php),执行所有MySQL查询 - 注意:ID设置为自动增量,非空,主键。所有数据都是动态插入的,因此我不知道哪个Username属于哪个ID等等。

$query = “INSERT INTO users (Username, Something, Something Else) VALUES (‘John’, ‘Smith’, ‘Whatever’ )”

所有内容都存储在“用户”表中。

然后它会被重定向到另一个页面(content.php),用户可以在其中查看或查看他/她的凭据。

问题是,我使用的是SELECT * FROM usersmysql_fetch_array(),但它始终为用户提供ID = 1而不是当前用户(假设用户为ID = 11)。我不知道如何编码。

假设有50行或更多行, 如果我不知道其ID或其他任何字段的值,我该如何检索特定行?

4 个答案:

答案 0 :(得分:1)

您可以使用:

mysql_insert_id();

获取上次查询中生成的ID。参考:http://us1.php.net/mysql_insert_id

此函数返回上一次查询成功时为AUTO_INCREMENT列生成的ID,如果前一个查询未生成AUTO_INCREMENT值,则返回0;如果未建立MySQL连接,则返回FALSE。

现在您拥有id,将其添加到您的WHERE子句中。

注意:如果您使用mysqli

会更好

答案 1 :(得分:0)

您必须使用WHERE

SELECT * FROM users WHERE ID = 11

如果您不使用WHERE,它会选择所有用户,而您的mysql_fetch_assoc会获得所有用户的一行(即ID = 1)。

PS:mysql_*已被弃用,而是使用mysqli_*

答案 2 :(得分:0)

您只使用mysql_fetch_array()一次,因此它只能让您获得一行。

你在写什么:

 <?php

 include('connection.php'); //establish connection in this file.
 $sql = "select * from users";
 $result = mysql_query($sql);
 $row = mysql_fetch_array($result);

 echo(row['id']);

 ?>

应该有什么来获取所有行:

 <?php

 include('connection.php'); //establish connection in this file.
 $sql = "select * from users";
 $result = mysql_query($sql);
 while($row = mysql_fetch_array($result))
 {
     echo(row['id']);
 }

 ?>

现在,您需要的是获取当时注册用户的用户ID。

为此,您需要创建一个会话。在session_start();中添加process.php并在其中创建会话。现在要获取最后id,您必须进行查询:

 select *  
 from users 
 where id = (select max(id) from users);

现在这将为您提供最后创建的ID。将其存储在会话变量中。

$_SESSION['id']=$id;

现在,在content.php上添加:

 session_start();
 echo($_SESSION['id']);

答案 3 :(得分:0)

使用mysql_命令:

$query = "INSERT INTO users (`Username`, `Something`, `Something Else`) VALUES ('John', 'Smith', 'Whatever' )";
$result = mysql_query($query) or die( mysql_error() );
$user_id = mysql_insert_id();
header("Location: content.php?id=".$user_id);

或将$ user_id传递到下一页的另一种方法

$_SESSION['user_id'] = $user_id;
header("Location: content.php");

使用mysqli_命令:

$query = "INSERT INTO users (`Username`, `Something`, `Something Else`) VALUES ('John', 'Smith', 'Whatever' )";
$result = mysqli_query($dbConn, $query)   or die( printf("Error message: %s\n", mysqli_error($dbConn)) );
$user_id = mysqli_insert_id($dbConn);