使用WHERE子句的多个SQL查询的更有效方法

时间:2014-03-04 13:27:04

标签: php sql where

无法弄清楚如何解决这个问题。

我正在制作一个包含大量核对表的页面。目标是将标签和复选框值作为动态值。

我有一个DB表,设置如下:

+---------+-------------+-----------------+
|     ID  |  name       |      value      |
+---------+-------------+-----------------+
|     1   |  checkbox1  |  checkbox1value |
|     2   |  checkbox2  |  checkbox2value |
+---------+-------------+-----------------+

我的目标是在数据库上运行查询,并能够为每一行设置PHP变量。

因此,我们可以说核对清单项目如下:

<input type="checkbox" name="checkbox" id="checkbox_id" value="<?php echo $val_checkbox1 ?>">

<label for="checkbox_id"><?php echo $label_checkbox1 ?></label>

<input type="checkbox" name="checkbox" id="checkbox_id2" value="<?php echo $val_checkbox2 ?>">

<label for="checkbox_id2"><?php echo $label_checkbox2 ?></label>

我可以运行一个基本的:

"SELECT * FROM table_name WHERE name = checkbox1"

$val_checkbox1 = $row['name'];

$label_checkbox1 = $row['value'];

但是我需要为每个复选框项目执行此操作,并且会有20 +。

我需要这样,以便用户可以拥有一个管理页面,并自己编辑复选框的值,而无需访问数据库。

我只需要一种方法来设置变量及其数据库中的值。

希望这有道理吗?

2 个答案:

答案 0 :(得分:0)

这应该这样做:

<?php
/* Connect to an ODBC database using PDO (which is more secure than the 
   older mysql libraries because it supports query parameters). */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $conn = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

// Actual code example
$sql = 'SELECT * FROM table_name';
foreach($conn->query($sql) as $row) {
    echo '<input type="checkbox" name="checkbox'.$row['id'].'" id="checkbox_'.$row['id'].'" value="'.$row['value'].'">';
    echo '<label for="checkbox_'.$row['id'].'">'.$row['name'].'</label>';
}

更新: 更通用的功能:

// Actual code example
$sql = 'SELECT * FROM table_name';
foreach($conn->query($sql) as $row) {
    if($row['type']=='checkbox') {
        echo '<input type="checkbox" name="checkbox'.$row['id'].'" id="checkbox_'.$row['id'].'" value="'.$row['value'].'">';
        echo '<label for="checkbox_'.$row['id'].'">'.$row['name'].'</label>';
    } else {
        echo '<label for="input_'.$row['id'].'">'.$row['name'].'</label>';
        echo '<input type="'.$row['type'].'" name="input'.$row['id'].'" id="input_'.$row['id'].'" value="'.$row['value'].'">';
    }
}

答案 1 :(得分:0)

全部读取并将它们存储在一个数组中。

$checkboxes = array();
$i = 0;
$sql = "SELECT * FROM table_name"
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query))
{
    $checkboxes[$i] = new array();
    $checkboxes[$i]['label'] = $row['label'];
    $checkboxes[$i]['value'] = $row['value'];
    $i++;
}

如果稍后需要另一个参考,也许是标签,你也可以使用其他东西作为数组的键而不是变量$i