Php 如何将项目从PDO数据库检索到数组中以检索字符串
我正在尝试检索用户的1-从存储在数据库中的会话令牌中只有一个具有会话令牌用户名。格式为id、代码、用户名的行。我正在尝试检索包含它的行,然后将该行存储到一个数组中,我可以检索用户名 表SQLPhp 如何将项目从PDO数据库检索到数组中以检索字符串,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试检索用户的1-从存储在数据库中的会话令牌中只有一个具有会话令牌用户名。格式为id、代码、用户名的行。我正在尝试检索包含它的行,然后将该行存储到一个数组中,我可以检索用户名 表SQL CREATE TABLE `signup` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `username` varchar(255)
CREATE TABLE `signup` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
表格信息
id code username
1 123-145-546-48 CallumCarmicheal
我正在测试的当前代码
$db2 = new PDO("mysql:host={$mysql_host};dbname={$mysql_database};charset=utf8", $mysql_user, $mysql_password, $options);
$token = "123-145-546-48";
$query = "
SELECT
id,
code,
username
FROM signup
WHERE
code = $token
";
try {
$stmt = $db2->prepare($query);
$stmt->execute();
} catch (PDOException $ex) {
die("Failed to run query: " . $ex->getMessage());
}
// return the Username from getting the token
return ...
我不明白这一点,这可能很简单,但我做了一个注册系统,需要管理员生成会话代码并设置用户名,在注册表中显示用户名,用户可以输入他的电子邮件和密码。这将检索用户名,但我尝试过的每个用户名都会返回一个空白字符串,或者根本不会返回任何内容。用户注册后,会话令牌将被删除。您需要在运行查询后获取结果 我也更喜欢参数化我的SQL
$query = "SELECT id, code, username
FROM signup
WHERE
code = ?";
try {
$stmt = $db2->prepare($query);
$stmt->execute(array($token));
您需要在运行查询后获取结果 我也更喜欢参数化我的SQL
$query = "SELECT id, code, username
FROM signup
WHERE
code = ?";
try {
$stmt = $db2->prepare($query);
$stmt->execute(array($token));
首先,如果代码中要使用的$code是VARCHAR/TEXT,那么应该用引号将其包装起来
但既然你在准备,就把它绑起来:
$token = "callumc";
// add a named placeholder for preparation
$query = "
SELECT
id,
code,
username
FROM signup
WHERE
code = :code
";
try {
$stmt = $db2->prepare($query);
// bind it
$stmt->execute(array(':code' => $token));
} catch (PDOException $ex) {
die("Failed to run query: " . $ex->getMessage());
}
然后,如果您希望从中获得一些东西,则需要获取结果:
$results = $stmt->fetch(PDO::FETCH_ASSOC);
echo $results['username']; // and others
首先,如果代码中要使用的$code是VARCHAR/TEXT,那么应该用引号将其包装起来
但既然你在准备,就把它绑起来:
$token = "callumc";
// add a named placeholder for preparation
$query = "
SELECT
id,
code,
username
FROM signup
WHERE
code = :code
";
try {
$stmt = $db2->prepare($query);
// bind it
$stmt->execute(array(':code' => $token));
} catch (PDOException $ex) {
die("Failed to run query: " . $ex->getMessage());
}
然后,如果您希望从中获得一些东西,则需要获取结果:
$results = $stmt->fetch(PDO::FETCH_ASSOC);
echo $results['username']; // and others
您没有对SELECT的结果执行任何操作 之后 您可以使用PDOStatement::fetch检索获得的字段 其中,$row将具有id、代码和用户名键 另外,以这种方式设置SQL查询是不安全的,请使用
$query = "
SELECT
id,
code,
username
FROM signup
WHERE
code = ?
";
// ...
$stmt->execute(array($token));
您没有对SELECT的结果执行任何操作 之后 您可以使用PDOStatement::fetch检索获得的字段 其中,$row将具有id、代码和用户名键 另外,以这种方式设置SQL查询是不安全的,请使用
$query = "
SELECT
id,
code,
username
FROM signup
WHERE
code = ?
";
// ...
$stmt->execute(array($token));