操作数应包含1列mysql php

操作数应包含1列mysql php,php,mysql,mysql-error-1241,Php,Mysql,Mysql Error 1241,操作数应包含1列 我的代码有什么问题吗 我尝试通过选择插入activitynote表 <?php require_once('Connections/Thaymay.php'); mysql_select_db($database_Thaymay, $Thaymay); $activityid = $_POST['select']; if($_POST) { foreach($_POST['namebox'] as $check) {

操作数应包含1列

我的代码有什么问题吗 我尝试通过选择插入activitynote表

<?php
   require_once('Connections/Thaymay.php');
   mysql_select_db($database_Thaymay, $Thaymay);   
   $activityid = $_POST['select'];

  if($_POST) {
    foreach($_POST['namebox'] as $check) {

            echo "$check \n "; 
            echo "<br> ";


            $query_ReSeActi = " INSERT INTO `ph3`.`activitynote` ( `idmemberref`, `idactivity`, `manaferid`, `staffinput`) select ( 
            idmemberref,    $activityid,    manaferid,  'system'  ) from activitynote where id = $check ;    ";
            $RsActivitynoteMem = mysql_query($query_ReSeActi, $Thaymay) or die(mysql_error());

    }
}



?>

如果您希望$\u POST['namebox']有多个值,那么您可能希望在一个查询中而不是在一个循环中完成所有操作(一般来说,如果您可以将到数据库的行程保存为到数据库的往返行程,则通常是一项非常昂贵的操作)。类似的方法可能会起作用,对您的帖子输入进行一些额外的消毒:

$idArray = array();  
if($_POST) {
  if( is_array( $_POST['namebox'] ) ) {
     foreach($_POST['namebox'] as $check) {
       $cleanCheck = intval( $check );
       if( $check > 0 ) {
          $idArray[] = $check;
       }
     }
  }
  $query_ReSeActi = " INSERT INTO `ph3`.`activitynote` ( `idmemberref`, `idactivity`, `manaferid`, `staffinput`) select ( 
        idmemberref,    $activityid,    manaferid,  'system'  ) from activitynote where id IN (" . implode( ',', $idArray ) . ") ;    ";
        $RsActivitynoteMem = mysql_query($query_ReSeActi, $Thaymay) or die(mysql_error());

}
这假设您的$\u POST['namebox']正在向脚本传递整数ID。


<?php
   require_once('Connections/Thaymay.php');
   mysql_select_db($database_Thaymay, $Thaymay);

   $activityid = $_POST['select'];

  if($_POST) {
    foreach($_POST['namebox'] as $check) {


            echo "$check \n "; 
            echo "<br> ";


            $query_ReSeActi = "
INSERT INTO `ph3`.`activitynote` 
( `idmemberref`
, `idactivity`
, `manaferid`
, `staffinput`
, `dateadd`
)
SELECT
  idmemberref
, $activityid
, manaferid
, 'system'
, NOW() 
FROM activitynote 
WHERE id = $check
"
;

$RsActivitynoteMem = mysql_query($query_ReSeActi, $Thaymay) or die(mysql_error());
    }
}
echo "<br><br> ";
echo $_POST['select'];



?>

您不仅容易受到SQL注入攻击,甚至没有检查您在
$\u POST['select']
中是否有任何数据,而是直接在查询中盲目使用它。显然,它没有任何价值。学会使用mysql\u real\u escape\u string
,请参阅:“.infrade(',',$idArray)。”操作数应包含1列创建表
activity
idactivity
int(11)非空自动增量,
activitydate
datetime非空,
activityname
varchar(30)默认空值,
group
varchar(25)默认空值,
ActDEsc
varchar(255)默认空值,
dateadd
datetime默认空值,
timestamp
timestamp空值更新当前时间戳时默认空值,主键(
idactivity
)ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;@user1040364对不起,我删掉了一些括号。我已经相应地编辑了我的答案。