操作数应包含1列mysql php
操作数应包含1列 我的代码有什么问题吗 我尝试通过选择插入activitynote表操作数应包含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) {
<?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对不起,我删掉了一些括号。我已经相应地编辑了我的答案。