Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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 - Fatal编程技术网

php中的SQL数组值

php中的SQL数组值,php,mysql,Php,Mysql,嗨,我对php/mysql真的很陌生 我正在做一个php/mysql学校项目,在一个表中有39个字段。 我想缩短我的代码,特别是在执行sql查询时 $sql = "INSERT into mytable ('field_1',...'field_39') Values('{$_POST['textfield_1']}',...'{$_POST['textfield_39']}')"; 我不知道该如何解决这个问题,但我想知道: $sql = "Insert into mytable ("----

嗨,我对php/mysql真的很陌生

我正在做一个php/mysql学校项目,在一个表中有39个字段。 我想缩短我的代码,特别是在执行sql查询时

$sql = "INSERT into mytable ('field_1',...'field_39') Values('{$_POST['textfield_1']}',...'{$_POST['textfield_39']}')";
我不知道该如何解决这个问题,但我想知道:

$sql = "Insert into mytable ("----all fields generated via loop/array----")  Values("----all form elements genrated via loop/array---")";
先谢谢你

您可以使用内爆:

<?php
  $sql = "Insert into mytable (";

  for ($i = 1; $i < 40; $i++) {
      if ($i == 39) {
          $sql .= "field_$i";
      } else {
          $sql .= "field_$i,";
      }
  }

  $sql .= "Values(";



  for ($i = 1; $i < 40; $i++) {
      if ($i == 39) {
          $sql .= "'" . $_POST[textfield_$i] . "'";
      } else {
          $sql .= "'" . $_POST[textfield_$i] . "',";
      }
  }
?>
$sql = "
INSERT into mytable 
('" . implode("', '", array_keys($_POST) . "') 
VALUES
('" . implode("', '", $_POST . "')";
(假设POST数组的索引也是db表字段的名称)

但是,这是非常不安全的,因为您会直接将post数据插入数据库

因此,您至少应该事先转义这些值,并确保它们是ok/有效的表字段:

// Apply mysql_real_escape_string to every POST value
array_walk($_POST, "mysql_real_escape_string");

您可以使用内爆:

$sql = "
INSERT into mytable 
('" . implode("', '", array_keys($_POST) . "') 
VALUES
('" . implode("', '", $_POST . "')";
(假设POST数组的索引也是db表字段的名称)

但是,这是非常不安全的,因为您会直接将post数据插入数据库

因此,您至少应该事先转义这些值,并确保它们是ok/有效的表字段:

// Apply mysql_real_escape_string to every POST value
array_walk($_POST, "mysql_real_escape_string");


例如:
试试这个,我想它会有用的

例如:
试试这个,我想它会有用的
<?php $sql=“插入mytable(”

对于($i=1;$i<40;$i++){

}

  } else {
       if(is_int($_POST[textfield_$i])){
           $sql .= $_POST[textfield_$i] .",";
       }
       else{
           $sql .= "'" . $_POST[textfield_$i] . "',";
        }  

  }
$sql.=“值(”

对于($i=1;$i<40;$i++){ 如果($i==39){ if(is_int($POST[textfield$i])){ $sql.=$POST[textfield$i]; } 否则{ $sql.=“'”$POST[textfield$i]。“'”; }

  } else {
       if(is_int($_POST[textfield_$i])){
           $sql .= $_POST[textfield_$i] .",";
       }
       else{
           $sql .= "'" . $_POST[textfield_$i] . "',";
        }  

  }
} ?>

它适用于数值。您可以在单引号中插入数值,但有时会产生一些问题 $sql=“插入mytable(”

对于($i=1;$i<40;$i++){

}

  } else {
       if(is_int($_POST[textfield_$i])){
           $sql .= $_POST[textfield_$i] .",";
       }
       else{
           $sql .= "'" . $_POST[textfield_$i] . "',";
        }  

  }
$sql.=“值(”

对于($i=1;$i<40;$i++){ 如果($i==39){ if(is_int($POST[textfield$i])){ $sql.=$POST[textfield$i]; } 否则{ $sql.=“'”$POST[textfield$i]。“'”; }

  } else {
       if(is_int($_POST[textfield_$i])){
           $sql .= $_POST[textfield_$i] .",";
       }
       else{
           $sql .= "'" . $_POST[textfield_$i] . "',";
        }  

  }
} ?>


它适用于数值。您可以在单引号中插入数值,但有时会产生一些问题

我只提到插入记录,更新记录如何?我只提到插入记录,更新记录如何?对不起,先生,我不知道如何使用内爆()。我只知道基本的php/mysql。查看php文档,它对了解特定函数的详细信息非常有帮助:。内爆将一个包含指定值的值数组粘在一起:
内爆($glue,$pieces);
对不起,先生,我不知道如何使用内爆()。我只知道基本的php/mysql。查看php文档,它对了解特定函数的详细信息非常有帮助:。内爆将一个包含指定值的值数组粘在一起:
in爆($glue,$pieces);