Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-执行sql查询时出现问题_Php_Mysql_Sql - Fatal编程技术网

PHP-执行sql查询时出现问题

PHP-执行sql查询时出现问题,php,mysql,sql,Php,Mysql,Sql,当我试图在php脚本中执行查询时,我遇到了一个问题 当列的值为300时,我需要用'Validated'更新表中的所有列 实际上,查询正在运行,但似乎它会多次进行更新。 你能告诉我我的php脚本哪里做错了吗 这是我的剧本: 我设法解决了我的问题。将查询置于循环之外是解决方案 我是这样做的: $fields = mysqli_query($conn,'SHOW columns FROM '.$tablename.'AmpliconData'); //columns to exclude $col

当我试图在php脚本中执行查询时,我遇到了一个问题

当列的值为
<300
时,我需要用
'QI'
更新表中的所有列;当
>300
时,我需要用
'Validated'
更新表中的所有列

实际上,查询正在运行,但似乎它会多次进行更新。
你能告诉我我的php脚本哪里做错了吗

这是我的剧本:


我设法解决了我的问题。将查询置于循环之外是解决方案

我是这样做的:

$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);
}} 
$fields=mysqli_query($conn,'SHOW columns FROM'.$tablename.'AmpliconData');
//要排除的列
$columns_to_exclude=数组('Amplicon');
while($row=mysqli\u fetch\u数组($fields))
{
$columns[]=$row['Field'];}
foreach($ind=>$val的列){
如果(!in_数组($val,$columns_to_exclude))
{
//$sqlAlterInt2Varchar='ALTER TABLE'.$TABLENAMPLICONDATA CHANGE'.$row['Field'..'..'.$row['Field'.'VARCHAR(50)NULL默认值NULL';
//mysqli_查询($conn,$sqlAlterInt2Varchar);
$sqlQI='UPDATE'.$tablename.'AmpliconData SET'.$val.='QI'其中'.$val.'300;';
echo$sqlVal.“
”; mysqli_查询($conn,$sqlVal); }}
“但它似乎进行了多次更新。”好吧,您已经将查询放在了一个循环中,所以每次循环运行时都会执行查询…@Epodax更新字段名,这不是一项通过php进行的危险工作吗。我将查询放在循环中,因为我获取了数组中的列名
$row['field'@Plum我不确定我是否明白了?他正在更新值,而不是列名。$sqlVal=“UPDATE”。$tablename。“AmpliconData SET”。$row[“Field”]。“=”Validated“其中,“$row[“Field”]。”>300;;//我想,如果我错了,不要开枪打我,但我认为sql希望“不要”
$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);
}}