我不想尝试使用循环。我只是一行中一列的一个值。我得到了我想要的以下代码,但必须有一种更简单的方法使用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;
这看起来太多了,无法从数据库中获取一个值。 :\
答案 0 :(得分:50)
您可以使用fetchColumn()
:
$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username = $q->fetchColumn();
答案 1 :(得分:22)
答案 2 :(得分:14)
您可以为此创建一个函数,并在每次需要单个值时调用该函数
function getSingleValue($tableName, $prop, $value, $columnName)
{
$q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'");
$f = $q->fetch();
$result = $f[$columnName];
return $result;
}
然后你就可以做到:
$singleValue = getSingleValue('login_users', 'username', $userid, 'name'); // will get you the value
因此,您只需创建一次该函数,但可以将其重用于具有不同列名的不同表。
社区编辑: 出于安全原因,请避免连接字符串以形成SQL查询,而是使用预准备语句。
因此,而不是脆弱的
$q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'");
将相应的代码与预备语句一起使用
$q = $conn->prepare('SELECT :columnName FROM :tableName WHERE :property=:value', [
'columName' => $columnName,
'tableName' => $tableName,
'property' => $prop,
'value' => $value
]);
答案 3 :(得分:2)
就像进入你的车,开车到商店,在人群中挣扎,抓住你需要的那罐牛奶,然后在回家的路上奋斗一样,做太多的工作,这样你才能拥有奶昔。
所有这些阶段都是必要的,每个后续步骤都取决于之前的步骤。
如果你反复这样做,那么一定要在它周围包装一个函数,这样你就可以重复使用它并将它减少到一个getMyValue()
调用 - 但是在后台,所有代码仍然必须存在。 / p>