二维阵列模拟/比较

时间:2013-11-22 19:00:14

标签: php arrays

我有以下几行......

$getmodels = array(
array('value' => 1, 'text' => 'Services'),
array('value' => 2, 'text' => 'Customers'),
array('value' => 3, 'text' => 'Operators'),
array('value' => 4, 'text' => 'Supports'),
array('value' => 5, 'text' => 'Guests'),
);
echo json_encode($getmodels);

现在我尝试通过表格及其行内容复制结果..

$db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$model = $db_connection->query("SELECT id, name FROM vhclmodel ORDER BY name;");
$getmodels = array();
while ($row = mysql_fetch_assoc($model)) {
   $getmodels[] = array('value' => $row['id'], 'text' => $row['name']);

}
echo json_encode($getmodels);

我得不到同样的结果,请帮助..还是一个新手。 TIA ...

1 个答案:

答案 0 :(得分:2)

您正在将msqli与已弃用的mysql功能混合使用。使用$model->fetch_assoc()代替mysql_fetch_assoc($model)

所以试试这个:

$getmodels = array();
while ($row = $model->fetch_assoc()) {
    $getmodels[] = array('value' => $row['id'], 'text' => $row['name']);
}
echo json_encode($getmodels);

请参阅http://us2.php.net/manual/en/mysqli-result.fetch-assoc.php

正如Mark在评论中指出的那样,您的手动数组按ID排序,而您的数据库查询按名称排序。如果这很重要,只需更改您的查询:

SELECT id, name FROM vhclmodel ORDER BY id