PHP - 执行我的SQL查询时发出问题

时间:2016-02-16 13:03:48

标签: php mysql sql

当我尝试在我的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);
            }
        }
    }
?>

1 个答案:

答案 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);
}}