-1

私はそれを理解できないようですが、php/mysqliに次のようなエラーが表示されます。

警告:28行目の/.../のforeach()に無効な引数が指定されました

私の質問は、上記の警告をどのように修正して、インサートをループし、すべてのインサートをデータベースに提供できるようにすることができるかということです。

<?php

ini_set('display_errors',1); 
 error_reporting(E_ALL);

 // connect to the database
 include('connect.php');

  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    die();
  }

$studentid = (isset($_POST['addtextarea'])) ? $_POST['addtextarea'] : ''; 
$sessionid = (isset($_POST['Idcurrent'])) ? $_POST['Idcurrent'] : '';   

$insertsql = "
INSERT INTO Student_Session
(SessionId, StudentId)
VALUES
(?, ?)
";
if (!$insert = $mysqli->prepare($insertsql)) {
// Handle errors with prepare operation here
}                                       

foreach($studentid as $id)
{    

$insert->bind_param("ii", $sessionid, $id);

$insert->execute();

if ($insert->errno) {
// Handle query error here
}

}

$insert->close();

$query = "SELECT ss.SessionId, SessionName, StudentId
FROM  
Student_Session ss
INNER JOIN Session s ON
ss.SessionId = s.SessionId
WHERE ss.SessionId = ? AND StudentId = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("ii", $sessionid, $studentid);
// execute query
$stmt->execute(); 
// get result and assign variables (prefix with db)
$stmt->bind_result($dbSessionId, $dbSessionName, $dbStudentId);
//get number of rows
$stmt->store_result();
$numrows = $stmt->num_rows();
//fetch the results
$stmt->fetch();

if ($numrows == 1){

echo json_encode(array('errorflag'=>false,'msg'=>"Students have been successfully added into the Assessment"));

}else{

echo json_encode(array('errorflag'=>true,'msg'=>"An error has occured, Students have not been added into the Assessment"));

}

        ?>
4

2 に答える 2

1

条件付きのwhere$studentidが設定されている場合、値を空の文字列に設定できます。そのような場合にステートメントとして準備してデータを挿入しようとさえしないように、おそらくそこにいくつかの条件が必要です。

于 2013-01-10T23:48:07.087 に答える
0

学生IDの値を次のように設定する場合:

$studentid = (isset($_POST['addtextarea'])) ? $_POST['addtextarea'] : ''; 

これは配列ではなく、値を割り当てるだけです。

あなたができることは、それを配列に設定し、それが初期化された後にその配列に値を入力することです。元:

$studentid = array();
$studentid[] = (isset($_POST['addtextarea'])) ? $_POST['addtextarea'] : '';    
于 2013-01-10T23:49:25.370 に答える