[英]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.