我不尝试使用循环。我只是从一行的一列中获取一个值。我用下面的代码得到了想要的东西,但是使用PDO必须有一种更简单的方法。
try {
$conn = new PDO('mysql:host=localhost;dbname=advlou_test', 'advlou_wh', 'advlou_wh');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
$userid = 1;
$username = $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username2 = $username->fetch();
$username3 = $username2['name'];
echo $username3;
这看起来似乎太多了,无法从数据库中获取一个值。 :\
您可以为此创建一个函数,并在每次需要单个值时调用该函数。出于安全原因,请避免串联字符串以形成SQL查询。取而代之的是,对值使用准备好的语句,并对SQL字符串中的所有其他内容进行硬编码。为了获得特定的列,只需在查询中明确列出它即可。 fetchColumn()
方法也很方便从查询中获取单个值
function getSingleValue($conn, $sql, $parameters)
{
$q = $conn->prepare($sql);
$q->execute($parameters);
return $q->fetchColumn;
}
然后您可以简单地做:
$name = getSingleValue($pdo, "SELECT name FROM login_users WHERE username=?", [$userid]);
它将为您带来价值。 $pdo
指的是PDO实例。
因此您只需要创建一次该函数,但是可以将其重新用于其他查询。
此答案已被社区编辑以解决安全问题
您可以使用fetchColumn()
:
$q= $conn->prepare("SELECT name FROM `login_users` WHERE username=?");
$q->execute([$userid]);
$username = $q->fetchColumn();
就像要进入汽车,开车去商店,在人群中挣扎,抢走你需要的那罐牛奶,然后奋力回家一样,这是一项艰巨的工作。奶昔。
所有这些步骤都是必要的,每个后续步骤都取决于之前执行的步骤。
如果反复执行此操作,则一定要在其周围包装一个函数,以便可以重用它并将其缩减为单个getMyValue()
调用-但在后台,所有这些代码仍然必须存在。