如何从表中的数据填充数组

时间:2013-05-30 16:51:55

标签: php html sql arrays

我正在给我姐姐写一个非常简单的座位安排。它只是一个数据库,其中包含一个人员列表,每个人都有一个分配的表号($tano

我的PHP如下:

$con = mysql_connect('localhost', $dbuser, $dbpass) or die(mysql_error());
$db = mysql_select_db($dbname, $con) or die(mysql_error());

// Get current table no
$tableno = $_GET["t"];

// Current table -> array
$t = array();
$i = 0;
$result = mysql_query('SELECT * FROM plan WHERE tano = $tableno ORDER BY fname');
while($row = mysql_fetch_array($result)) {
$t[$i] = $row;
$i++;
}

// Get other tables (Seats Remaining)
for ($i = 1; $i <= 40; $i++) {
    $result = mysql_query("SELECT * FROM plan WHERE 'tano' = $i");
    $seatsremaining = 10-mysql_num_rows($result);
         if ($seatsremaining == 0) {$d[$i] = "Table ".$i." (No Seats Remaining)";}
    else if ($seatsremaining == 1) {$d[$i] = "Table ".$i." (1 Seat Remaining)";}
    else if ($seatsremaining >= 2) {$d[$i] = "Table ".$i." (".$seatsremaining." Seats Remaining)";}
}

?>

您可以在www.greenbottleblue.com上看到其余的HTML代码

未填充数组,并且出现恼人的SQL错误:

  

警告:mysql_fetch_array()要求参数1为资源,布尔值在第18行的/home/greenbot/public_html/index.php中给出

表结构是:

enter image description here

1 个答案:

答案 0 :(得分:1)

在您的第一个查询中,您缺少值的引号:

$result = mysql_query('SELECT * FROM plan WHERE tano = $tableno ORDER BY fname');

这应该是:

$result = mysql_query("SELECT * FROM plan WHERE tano = '$tableno' ORDER BY fname");

在第二个查询中,您使用引号而不是列名称周围的反引号:

$result = mysql_query("SELECT * FROM plan WHERE 'tano' = $i");

这应该是:

$result = mysql_query("SELECT * FROM plan WHERE `tano` = $i");

您应该注意,您的代码假定查询已成功完成而不是检查。出于调试目的,您可以添加:

... or die(mysql_error());

到每个mysql_query(...)语句的末尾,以获取有关尝试查询的详细信息。您应该为生产代码中的此类错误开发日志记录策略。

此外,请注意使用未经过滤的用户输入$tableno = $_GET["t"];为SQL注入攻击打开了大门。考虑更新代码以使用参数化PDO查询,或者至少过滤传入的数据。