我想知道如何从MySQL表中选择一个值。该表包括列username和id其他列(id是自动递增的,并且username是唯一的)。给定用户名,我想将一个会话变量设置为$_SESSION['myid']等于给id定用户名的列中的值。这是我已经尝试过的代码:
username
id
$_SESSION['myid']
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为字符串类型不能解决问题。
$value
不要在查询中的字段名称或表名称中使用引号。
提取对象后,您需要通过属性/属性名称访问对象的属性/属性(以您的情况为ID)。
注意事项: 由于不建议使用mysql_ ,请使用mysqli_ 或PDO。 这里是使用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;
温馨提示:这种情况下使用限制1,可以节省执行时间:)