【发布时间】:2015-05-25 00:48:51
【问题描述】:
这需要一些例子:
例如这是我的 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");
这为我提供了“用户表”中的所有项目。
之后我有一个 index.php 文件,它使用 require_once('db.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”、“电子邮件”或“用户名”并将其添加到变量中,以便稍后在其他 sql 查询中使用它使用“ID”更新或删除行?
例如,如果我想从“用户”表中删除 2nd 用户,我可以使用类似:
DELETE FROM test.user WHERE ID = $user_id;
我如何获得 $user_id?
【问题讨论】:
-
将所有变量存储到会话中有什么问题? (旁注:你一直在
mysql和myqli之间来回跳转。不要那样做。mysql_并且你的大部分代码都已弃用。