我想知道如何从我的MySQL表中 Select 单个值.该表包括列usernameid等(id是自动递增的,username是唯一的).给定用户名后,我希望将会话变量$_SESSION['myid']设置为等于id列中对应于给定用户名的值.下面是我已经try 过的代码:

session_start();
$name = $_GET["username"];
$sql = "SELECT 'id' FROM Users WHERE username='$name'";
$result = mysql_query($sql);
$value = mysql_fetch_object($result);
$_SESSION['myid'] = $value;

到目前为止,我得到了:

可捕获的致命错误:无法将类stdClass的对象转换为字符串.

$value转换为类型字符串并不能解决问题.

推荐答案

  1. 不要在查询中的字段名或表名中使用引号.

  2. 获取对象后,您需要通过属性/属性名称访问对象属性/属性(在 case 中为id).

注意:please use mysqli_* or PDO since mysql_* deprecated.这里它使用的是mysqli:

session_start();
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli('localhost', 'username', 'password', 'db_name');
$link->set_charset('utf8mb4'); // always set the charset
$name = $_GET["username"];
$stmt = $link->prepare("SELECT id FROM Users WHERE username=? limit 1");
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
$value = $result->fetch_object();
$_SESSION['myid'] = $value->id;

Bonus tips: Use limit 1 for this type of scenario, it will save execution time :)

Database相关问答推荐

Golang Gorm和Gin无法创建具有关联的对象

MongoDB事务,回调API方法

如何以编程方式将产品添加到 Opencart 数据库

数据库设计 - 类别(categories)和子类别(sub-categories)

多列上的全文索引如何工作?

更新查询 PHP MySQL

主必须包括表的分区位置错误中的所有列?

用于存储年份的 MySQL 类型:Smallint 或 Varchar 或 Date?

如何将数据库从一台计算机复制到另一台计算机?

用于获取存储在单个表中的 n 级父子关系的 Postgresql 查询

我如何知道何时索引列以及使用什么索引?

多语言数据库,默认回退

单父实体的核心数据性能

如何在 SSIS 中插入新记录之前清空我的目标表?

如何从数据库中解析时间

如何将sqlite表从磁盘数据库复制到python中的内存数据库?

Android - ViewHolder 模式是否在 CursorAdapter 中自动实现?

如何对彼此接近的纬度/经度点进行分组?

XML、CSV 或数据库格式的 ICD-9 代码列表

我可以在 /sdcard 上下载 SQLite 数据库并从我的 Android 应用程序访问它吗?