你好,我正在研究一个项目(我是一个新手),这是项目的进展方式......
我创建了创建用户页面,用户输入凭据并点击创建帐户。
重定向到另一个页面(process.php),执行所有MySQL查询 -
注意:ID
设置为自动增量,非空,主键。所有数据都是动态插入的,因此我不知道哪个Username
属于哪个ID
等等。
$query = “INSERT INTO users (Username, Something, Something Else) VALUES (‘John’, ‘Smith’, ‘Whatever’ )”
所有内容都存储在“用户”表中。
然后它会被重定向到另一个页面(content.php),用户可以在其中查看或查看他/她的凭据。
问题是,我使用的是SELECT * FROM users
和mysql_fetch_array()
,但它始终为用户提供ID = 1
而不是当前用户(假设用户为ID = 11
)。我不知道如何编码。
假设有50行或更多行, 如果我不知道其ID或其他任何字段的值,我该如何检索特定行?
答案 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);