当我尝试在我的php脚本中执行查询时,我遇到了一个问题。
当列的值为'QI'
时,我需要使用< 300
更新表格的所有列; 'Validated'
时,我需要使用> 300
更新我的表格的所有列。
实际上,查询正在运行,但似乎它会多次更新 可以告诉我在我的PHP脚本中我做错了什么吗?
这是我的脚本:
<?php
//Get column names and do the update
$fields = mysqli_query($conn,'SHOW columns FROM '.$tablename.'AmpliconData');
//columns to exclude
$columns_to_exclude= array('Amplicon');
while ($row = mysqli_fetch_array($fields)) {
$columns[]=$row['Field'];
foreach ($columns as $ind=>$val) {
if (!in_array($val,$columns_to_exclude)) {
$sqlQI = 'UPDATE '.$tablename.'AmpliconData SET '.$row['Field'].'="QI" WHERE '.$row['Field'].'<300;';
echo $sqlQI.'<br/>';
mysqli_query($conn,$sqlQI);
$sqlVal='UPDATE '.$tablename.'AmpliconData SET '.$row['Field'].'="Validated" WHERE '.$row['Field'].'>300;';
echo $sqlVal.'<br/>';
mysqli_query($conn,$sqlVal);
}
}
}
?>
答案 0 :(得分:0)
我设法解决了我的问题。将查询置于循环之外是解决方案。
以下是我的表现:
$fields = mysqli_query($conn,'SHOW columns FROM '.$tablename.'AmpliconData');
//columns to exclude
$columns_to_exclude= array('Amplicon');
while($row = mysqli_fetch_array($fields))
{
$columns[]=$row['Field'];}
foreach($columns as $ind=>$val){
if(!in_array($val,$columns_to_exclude))
{
//$sqlAlterInt2Varchar='ALTER TABLE '.$tablename.'AmpliconData CHANGE '.$row['Field'].' '.$row['Field'].' VARCHAR(50) NULL DEFAULT NULL';
//mysqli_query($conn,$sqlAlterInt2Varchar);
$sqlQI='UPDATE '.$tablename.'AmpliconData SET '.$val.'="QI" WHERE '.$val.'<300;';
//echo $sqlQI.'<br/>';
mysqli_query($conn,$sqlQI);
$sqlVal='UPDATE '.$tablename.'AmpliconData SET '.$val.'="Validated" WHERE '.$val.'>300;';
echo $sqlVal.'<br/>';
mysqli_query($conn,$sqlVal);
}}