这需要一些例子:
例如,这是我的MySql dump.sql文件:
CREATE TABLE IF NOT EXISTS `user` (
`id` int(10) unsigned NOT NULL,
`email` varchar(30) NOT NULL,
`username` varchar(30) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
INSERT INTO `user` (`id`, `email`, `username`) VALUES
(1, 'test1@test.com', 'test1'),
(2, 'test2@test.com', 'test2'),
(3, 'test3@test.com', 'test3');
ALTER TABLE `user`
ADD PRIMARY KEY (`id`);
ALTER TABLE `user`
MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
然后我有一个包含数据库连接和函数的db.php文件:
<?php
define('DB_HOST','localhost');
define('DB_USER','test');
define('DB_PASS,'test');
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$conn) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db(DB_USER, $conn);
function get_all($sql)
{
@$db = new mysqli(DATABASE_HOSTNAME, DATABASE_USERNAME, DATABASE_PASSWORD);
global $db;
$q = mysqli_query($db, $sql);
while (($result[] = mysqli_fetch_assoc($q)) || array_pop($result)) {
;
}
return $result;
}
之后我有一个看起来像这样的SQL查询:
$users = get_all("SELECT * FROM test.user ORDER BY id");
这为我提供了“用户表”中的所有项目。
之后我有一个使用require_once('db.php')的index.php文件,并且具有以下代码来调用数据库表中的所有项目,如下所示:
<form>
<table>
<thead>
<tr>
<th>ID</th>
<th>Email</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<?php if (!empty($users)) foreach ($users as $user) { ?>
<tr>
<td><?= $user["id"]; ?></td>
<td><?= $user["email"]; ?></td>
<td><?= $user["username"]; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</form>
所有这些都可以打印出一张包含所有用户列表的表格。 现在我的问题是:如何将“id”,“email”或“username”添加到某种全局变量中,以便稍后使用“id”。
例如我试图将id添加到$ _SESSION:
<td><?= $_SESSION["user_id"] = $user["id"]; ?></td>
如果我回应它,那只能告诉我最后一个id:
<?php echo $_SESSION["user_id"]; ?>
...这给了我“3”
我想问的是:有没有办法从每个表行获取“ID”,“email”或“username”并将其添加到变量中,所以我可以在以后的其他SQL查询中使用它使用“ID”进行UPDATE或DELETE行?
例如,如果我想从“用户”表中删除第二个用户,我可以使用以下内容:
DELETE FROM test.user WHERE ID = $user_id;
我如何获得$ user_id?
答案 0 :(得分:1)
在每个foreach循环中,您可以按如下方式存储会话数据:
$_SESSION[$user['id']]['email'] = $user['email'];
$_SESSION[$user['id']]['username'] = $user['username'];
然后,当您想要检索电子邮件或用户名时,您只需传入ID。
例如,如果ID为7,要获取电子邮件地址,您可以写:
$_SESSION[7]['email']
这将返回ID为7的用户的电子邮件地址。
这应该有所帮助。
$_SESSION['user_id']
只显示最后一个ID的原因是因为每次foreach循环运行时,它都会覆盖它,直到你到达循环的最后一次迭代,然后就是你回显的那个。