Php mysql查询中的Concat()函数或替代解决方案
我试图在mysql查询中的值之前/之后添加一个字符。但我不能让它工作。 这是在我的情况下不起作用的部分:Php mysql查询中的Concat()函数或替代解决方案,php,mysql,Php,Mysql,我试图在mysql查询中的值之前/之后添加一个字符。但我不能让它工作。 这是在我的情况下不起作用的部分: $query = "select CONCAT ('.', DuRpt) as DuRpt, DaRpt from DDtb order by DATE DESC"; 您可以在下面看到完整的代码。你知道为什么它不起作用吗?或者我能找到一个替代方案吗。谢谢 <div class="container"> <div class="left"> <?php in
$query = "select CONCAT ('.', DuRpt) as DuRpt, DaRpt from DDtb order by DATE DESC";
您可以在下面看到完整的代码。你知道为什么它不起作用吗?或者我能找到一个替代方案吗。谢谢
<div class="container">
<div class="left">
<?php
include ("etc/config.php");
$query = "select concat ('.', DuRpt) as DuRpt, DaRpt from DDtb order by DATE DESC";
$result = mysqli_query($link, $query);
if (!$result) {
$message = 'ERROR:' . mysqli_error($link);
return $message;
} else {
$i = 0;
echo '<form name="select" action="" method="GET">';
echo '<select name="mySelect" id="mySelect" size="44" onchange="this.form.submit()">';
while ($i < mysqli_field_count($link)) {
$meta =
mysqli_fetch_field_direct($result, $i);
echo '<option>' . $meta->name . '</option>';
$i = $i + 1;
}
echo '</select>';
echo '</form>';
}
?>
</div>
<div>
<?php
if(isset($_GET['mySelect'])) {
$myselect = $_GET['mySelect'];
$sql = "SELECT `$myselect` as mySelect from DDtb order by DATE DESC";
$result = mysqli_query($link, $sql);
if ($result->num_rows > 0) {
$table_row_counter = 3;
echo '<table>';
while($row = $result->fetch_assoc())
{
$table_row_counter++;
if ($table_row_counter % 30 == 1) {
echo '</table>';
echo '<table>';
}
echo "<tr><td>" . $row["mySelect"] . "</td></tr>";
}
}
}
echo '</table>';
mysqli_close($link);
?>
</div>
</div>
只需更新您的代码并从中删除重复的DuRpt
$query = "select concat ('.', DuRpt) as DuRpt from DDtb order by DATE DESC";
对于代码的后半部分,您可以执行以下操作:
注意,您不需要在初始查询中包含任何内容
if(isset($_GET['mySelect'])) {
// configure every option here, if there's not pre/postfix, use a blank string
$prepostfixes = [
'DuRpt' => ['.', '.'],
'DaRpt' => ['', ''],
];
$myselect = $_GET['mySelect'];
if (!isset($prepostfixes[$myselect])) {
die ('Unknown Select'); // this will prevent sql injection
}
$sql = "SELECT `$myselect` as mySelect from DDtb order by DATE DESC";
$result = mysqli_query($link, $sql);
if ($result->num_rows > 0) {
$table_row_counter = 3;
echo '<table>';
$prefix = $prepostfixes[$myselect][0];
$postfix = $prepostfixes[$myselect][1];
while($row = $result->fetch_assoc())
{
$table_row_counter++;
if ($table_row_counter % 30 == 1) {
echo '</table>';
echo '<table>';
}
echo "<tr><td>" . $prefix . $row["mySelect"] . $postfix . "</td></tr>";
}
}
}
if(isset($\u GET['mySelect'])){
//在此处配置每个选项,如果没有前缀/后缀,请使用空白字符串
$prepostfix=[
'DuRpt'=>['.','.],,
“黑色”=>['',],
];
$myselect=$_GET['myselect'];
if(!isset($prepostfixes[$myselect])){
die('Unknown Select');//这将阻止sql注入
}
$sql=“按日期描述从DDtb订单中选择“$myselect`作为myselect”;
$result=mysqli\u查询($link,$sql);
如果($result->num_rows>0){
$table_row_counter=3;
回声';
$prefix=$prepostfix[$myselect][0];
$postfix=$prepostfix[$myselect][1];
而($row=$result->fetch_assoc())
{
$table_row_counter++;
if($table\u row\u计数器%30==1){
回声';
回声';
}
echo“$prefix.$row[“mySelect”]。$postfix.”;
}
}
}
您是否收到任何错误?您的DDtb的格式是什么样的?我没有发现任何错误。奇怪的是结果输出时没有字符(.),我只得到简单的结果。你希望结果输出到哪里?除了您的查询之外,我在任何地方都看不到DuRpt…DuRpt显示在selectbox中,单击时会显示结果。在这种情况下,DuRpt变成了myselect。啊,我明白了,所以$myselect得到了'DuRpt'的值,而您的第二个查询结果就是“SELECTDuRpt
as myselect from DDtb order by DATE DESC”。对不起,我不明白您对DuRpt副本的意思。我在代码中尝试了你的建议,但没有效果。你在使用phpmyadmin吗?phpmyadmin->你的数据库,单击SQL(结构旁边)并执行选择concat('.',DuRpt)作为DDtb order by DATE DESC中的DuRpt,然后让我知道结果。在phpmyadmin中,它起作用。我的意思是字符(.)被添加到字段值中。但是它在代码中不起作用。如果它在phpmyadmin中起作用,那么它应该在代码中起作用,并给出相同的结果。