我有一个MySQL数据库表,其中配置了十六进制,rgb十进制和cmyk颜色模型中所有需要的颜色。我想做的就是根据对变量的查询存储所有合适的结果。请告诉新手他怎么能正确有效地做到这一点......提前致谢
DB
我的耻辱
$result=$mysqli->query("SELECT * FROM config_colors WHERE `color_model_type`='hex' OR `color_model_type`='rgb'" );
while ($row=mysqli_fetch_array($result)) {
if (($row['color']==='white') || ($row['color']==='black')) {
if ($row['color_model_type']==='hex') {
print_r ('$c_h_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['color_model_type']==='rgb') {
print_r ('$c_r_'.$row['color'].' = '.$row['color_value']);
}
else {}
}
else {
if ($row['color_model_type']==='hex') {
if ($row['monochromatic_level']==='lightest') {
print_r ('$c_h_lt_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='lighter') {
print_r ('$c_h_lr_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='light') {
print_r ('$c_h_l_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='medium') {
print_r ('$c_h_m_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='dark') {
print_r ('$c_h_d_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='darker') {
print_r ('$c_h_dr_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='darkest') {
print_r ('$c_h_dt_'.$row['color'].' = '.$row['color_value']);
}
else {}
}
else if ($row['color_model_type']==='rgb') {
if ($row['monochromatic_level']==='lightest') {
print_r ('$c_r_lt_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='lighter') {
print_r ('$c_r_lr_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='light') {
print_r ('$c_r_l_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='medium') {
print_r ('$c_r_m_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='dark') {
print_r ('$c_r_d_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='darker') {
print_r ('$c_r_dr_'.$row['color'].' = '.$row['color_value']);
}
else if ($row['monochromatic_level']==='darkest') {
print_r ('$c_r_dt_'.$row['color'].' = '.$row['color_value']);
}
else {}
}
else {}
}
}
有关查询的其他问题:查询是根据SQL注入的安全性编写的吗?如果我的WHERE子句包含整数怎么办?
答案 0 :(得分:1)
您可以使用variable variables为新变量动态分配值
而不是
print_r ('$c_h_'.$row['color'].' = '.$row['color_value']);
试
$var = 'c_h_'.$row['color'];
$$var = $row['color_value'];
答案 1 :(得分:1)
您的查询在SQL注入时是安全的,因为它不接收任何输入数据。在保持查询不变的情况下,没有注入的入口点。
关于你的问题,如果我理解它,你最好每种颜色类型使用一个数组。
<?php
$rgb = array();
$hex = array();
$result = mysqli->query("
SELECT
*
FROM config_colors
WHERE
`color_model_type`='hex' OR
`color_model_type`='rgb'
");
while ($row = mysqli_fetch_array($result))
{
if ($row['color_model_type']==='hex')
$hex[ $row['color'] ] = $row;
elseif ($row['color_model_type']==='rgb')
$rgb[ $row['color'] ] = $row;
}
稍后如果您需要有关rgb格式的白色信息,您只需var_dump($rgb['white']);