繁体   English   中英

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

[英]More efficient way of using multiple SQL queries with WHERE clauses

不能弄清楚如何解决这个问题。

我正在制作一个包含较大清单的页面。 目的是使标签和复选框值为动态值。

我有这样设置的数据库表:

+---------+-------------+-----------------+
|     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+。

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

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

希望这有意义吗?

应该这样做:

<?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'].'">';
    }
}

读取所有内容并将它们存储在数组中。

$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之外的其他键作为数组的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM