基于php中的Id查询表中的所有行

时间:2015-10-27 16:14:35

标签: php mysql arrays

我的数据库中有一个包含53行的表。行中的变量是INT id,VARCHAR var和INT votes。我无法弄清楚如何将表中的所有行查询到数组中。我希望能够在引用id时获得'var'变量。这是我到目前为止,它确实只会查询第一行。 (因此id ='1')。

<?php

include_once "code.php";
$new_array = array();
$sql = mysql_query("SELECT * FROM Variables WHERE id='1'");
while($row = mysql_fetch_array($sql)){
$new_array[ $row['id']] = $row;
};

我尝试使用for循环并将变量放在'1'的位置,但这也不起作用。如果你还可以请告诉我如何让var变量引用任何非常好的id。感谢

1 个答案:

答案 0 :(得分:0)

您为每一行声明$new_array。你应该将它移到while循环之外。另外,尽量不要使用mysql_ *函数,因为它们已被弃用。尝试mysqli_ *甚至更好的PDO。

include_once "code.php";
$sql = mysql_query("SELECT * FROM Variables");
$new_array = array(); //This array should be not inside while
while($row = mysql_fetch_array($sql)){
    $new_array[$row['id']] = $row;
    //Do something else here if you want
};

使用PDO

try {
    $link= new PDO("mysql:host=$hostname;dbname=mysql", $username, $password);
    echo "PDO connection object created";
}
catch(PDOException $e) {
    echo $e->getMessage();
    die();
}

$sql = "SELECT * FROM users";
//Prepare your query
$stmt = $link->prepare($sql);
//Execute your query binding variables
$result = $stmt->execute(array());
$result = $stmt->fetchAll();
$new_array = array();
foreach ($result as $row) {
    $new_array[$row['id']] = $row;
}

评论后编辑:

从您的查询中删除WHERE id = '1',您将获得所有行。然后你可以使用:

获取id引用的var
echo $new_array[1]['var'];
echo $new_array[2]['var'];