PHP SQL ...在数组中查询

时间:2012-02-19 19:44:32

标签: php mysql arrays

我有一个类,在该类中是这个函数,其中有一个select语句

class homeclass {

    function viewHome(){
        $connection = mysql_connect("localhost","will","Idontknow!1");
        if (!$connection){
            die('Could not connect: ' . mysql_error());
        }

        $db = mysql_select_db("willr", $connection);

        $query = "select id, text, image from home";
        $results = mysql_query($query, $connection);
        $results = mysql_fetch_array($results);

        return $results;

        $close = mysql_close($connection);
    }

}

我将该函数调用到案例中的另一个文件中......就像这样

case"updatehome":
    $homeArray = $home->viewHome();
    print_r($homeArray);
    break;

当我执行print_r语句时,我得到了回复......

Array ( [0] => 1 [id] => 1 [1] => Test Header [text] => Test Header [2] => test.jpg [image] => test.jpg )

我的问题是为什么我要两次获得eveything?我不明白

3 个答案:

答案 0 :(得分:1)

这是因为您使用的是mysql_fetch_array,请使用mysql_fetch_assoc,而只返回关联数组,或将MYSQL_ASSOC作为mysql_fetch_array

的第二个参数传递

答案 1 :(得分:1)

该课程表现出对代码知之甚少的知识。 return结束功能块,因此mysql_close($connection); 永不运行。更不用说为每个查询打开连接的开销......只需在代码开头打开一次连接,然后从那里进行的所有mysql_query调用都会假设该连接。此外,您还可以定义从未使用过的变量($db$close)。

无论如何,mysql_fetch_array返回一个包含数字键(如mysql_fetch_rows)和关联键(如mysql_fetch_assoc中)的数组。理想情况下,您应该使用_rows_assoc,具体取决于哪种情况更容易。在这里,您可能需要_assoc

答案 2 :(得分:1)

你得到的东西都是两次,因为mysql_fetch_array以0索引格式(数字索引)和关联格式返回值。如果只需要一个,则传入第二个参数或使用其他函数之一。

,然后再进一步提示:

  • 列表项
  • 调查MySQL中的PDO函数。它们将帮助您编写更好,更安全的代码。
  • 请不要将密码和其他敏感信息发布到SO。
  • 您可能想要阅读OO设计,甚至调查其中的许多PHP框架之一。即使你没有使用它(并且有时候有充分的理由不这样做),尝试一两个可能是开始熟悉常见的OO设计模式的好方法。 Zend Framework,Symfony2和CodeIgniter是最流行的3个(但到目前为止不是唯一的:enter link description here