【问题标题】:Getting data from cell从单元格中获取数据
【发布时间】:2011-08-12 15:54:13
【问题描述】:

我有一个名为“设置”的数据库表,在该表中我有 2 列。示例图片:

如您所见,第一列称为“setting_name”,第二列称为“setting_value”。

我该怎么做,所以每当我写例子时:

echo $setting['ad_cost_micro'];

它会打印出来:

0.00200

顺便说一句。是否可以不使用 while 语句?

【问题讨论】:

  • 截图不行,上传小图试试
  • 我更新了截图

标签: php mysql row cell


【解决方案1】:

我倾向于使用 PDO 和 fetchAll()

$stmt = $db->prepare('SELECT `setting_name`, `setting_value` FROM `settings`');
$stmt->execute();
$setting = $stmt->fetchAll();
echo $settings['ad_cost_micro']; //Should output 0.00200.

注意:无论您使用什么,while 循环是不可避免的,因为您必须循环遍历结果集 (fetchAll()) 也会这样做,而且要知道每个循环都是一个 while循环(即使是 for 循环!)。

【讨论】:

  • 感谢您提供的信息,我不知道!如何使用上面的代码片段,以便在我的所有页面上都可以访问 $setting 变量?
  • 您可以将其存储在会话中,或者包含这段代码(在每个页面上使用 include_once()require_once()
  • 但是,$db 变量呢。我们不能忽略它,因为它给了我一个错误。
  • 当然,这个sn-p假设你已经连接并设置了PDO对象。请参阅PHP Manual 获取更多帮助
【解决方案2】:

如果 mysqli 可用...

$mysqli = new mysqli(hostname, username, password, database);
$result = $mysqli->query('SELECT setting_name,setting_value FROM settings');

if ($result->num_rows > 0)
{
    $rows = $result->fetch_array();
    $setting = array();
    for($i = 0; $i <= $result->num_rows(); $i++)
    {
        $setting[$rows[$i]['setting_name']] = $row[$i]['setting_value'];
    }

    unset($rows);
    $result->free();
}
else
{
    // error handling
}

$mysqli->close();

编辑:在代替 for 时删除

【讨论】:

    【解决方案3】:

    看不到截图,但也许...

        $query = mysql_query("SELECT * FROM settings");
        while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
            $setting[$row['setting_name']] = $row['setting_value'];
        }
    

    【讨论】:

    • 是的,但这是在 while 循环中完成的。这不能避免吗?
    • @Rikudo 那有什么问题?我们对OP的安装一无所知,所以你不知道其他功能(例如:mysqli,PDO)是否可用。
    • mysql_* 函数已(非官方)弃用。存在更好的替代方案,例如 MySQLi(好)或 PDO(好)。
    • 它们当然不会被弃用,而且可能永远不会因为 80% 的代码库仍在使用 mysql 函数。但是感谢您的批评:-/
    猜你喜欢
    • 2020-03-25
    • 2011-10-23
    • 1970-01-01
    • 2011-05-11
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    相关资源
    最近更新 更多