0

オペランドには 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());

    }
}



?>
4

2 に答える 2

0
<?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'];



?>
于 2011-12-28T02:07:15.143 に答える
0

$_POST['namebox'] に複数の値が予想される場合は、ループではなく 1 つのクエリですべてを実行することをお勧めします (一般的に言えば、データベースへのトリップを保存できる場合は、データベースへの往復として保存する必要があります)。通常、非常にコストのかかる操作です)。POST入力のサニタイズを追加すると、次のようなものが機能する可能性があります。

$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());

}

これは、 $_POST['namebox'] が整数 ID をスクリプトに渡していることを前提としています。

于 2011-12-27T13:11:31.660 に答える