一尘不染

PHP和MySQL选择一个值

mysql

我想知道如何从MySQL表中选择一个值。该表包括列usernameid其他列(id是自动递增的,并且username是唯一的)。给定用户名,我想将一个会话变量设置为$_SESSION['myid']等于给id定用户名的列中的值。这是我已经尝试过的代码:

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为字符串类型不能解决问题。


阅读 338

收藏
2020-05-17

共1个答案

一尘不染

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

  2. 提取对象后,您需要通过属性/属性名称访问对象的属性/属性(以您的情况为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,可以节省执行时间:)

2020-05-17