我需要将表Status中的所有值放入变量中。 我想这不是最好的方式,我在下面做了它。我尝试过使用PDO :: FETCH_ASSOC这是我无法工作的。 我该怎么做才能正确?感谢。
我的表名为Status:
------------------ | Rule | Value | |----------------| | Active | 1 | |Version | 102 | | Limit | 15000 | ------------------
我的代码:
function checkStatus($connection, $rule) {
$query = $connection->prepare('SELECT Value FROM Status WHERE Rule=?');
$query->execute(array($rule));
$result = $query->fetchColumn();
return (int)$result;
}
try {
$connection = new PDO("mysql:host=localhost;dbname='something';charset=utf8", 'username', 'password');
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $ex) { //do-stuff }
$active = checkStatus($connection, "Active")
$version = checkStatus($connection, "Version")
$limit = checkStatus($connection, "Limit")
这是我希望它工作的方式,但是我怎么能只用一个查询到db然后把结果放在变量中,因为我现在有大约10个?
答案 0 :(得分:1)
$query = $connection->prepare('SELECT Value, Rule FROM Status');
$query->execute(array($rule));
$result = $query->fetchAll();
foreach ($result as $val)
{
${strtolower($val['Rule'])} = $val['Value'];
}
echo "$active, $version, $limit"; //1, 102, 15000
这将做同样的事情(将它们放在同一个变量中)。这称为super variables
(创建一个名称基于字符串的变量)。