1

だから私は、データの名前を日付、開始、終了、日付を示す数字で設定し、どこで開始および終了するときに、php で $_POST から変数を取得する方法を考えていました。フォームを使用して変数を作成する場合、変数の作成は正常に機能します。問題は、変数にアクセスするときに次のエラーが発生することです。

解析エラー: 構文エラー、予期しない '' (T_ENCAPSED_AND_WHITESPACE)、識別子 (T_STRING) または変数 (T_VARIABLE) または数値 (T_NUM_STRING) が必要です

私のコード:

<?php
$club=$_POST['club'];
$name=$_POST['event'];
$text=$_POST['descript'];

$num=$_POST['quantity'];
$user=$_POST['user'];

$flag=$_POST['flag'];

require_once("conf.inc.php");

$host=$CFG->dbHost;
$userDB=$CFG->dbUser;
$pword=$CFG->dbPassword;
$db=$CFG->dbDatabase;

$mysqli = new mysqli($host, $userDB, $pword, $db);
$mysqli->connect($host, $userDB, $pword, $db);
if(!isset($flag)) {
    $mysqli->query("INSERT INTO fi_events VALUES $name, $text, $club");
    $eventResult = $mysqli->query("SELECT ID FROM fi_events WHERE Name=$name, FlavourText=$text, ClubID=$club");
    while(list($event) = $eventResult->fetch_row()) {
        $ID = $event;
    }
}
else {
    $eventID = $_POST['eventID'];
    for($i=0;$i<$num;$i++){
        $mysqli->query("INSERT INTO fi_slots VALUES $eventID, $_POST['slots$i'], 0, $_POST['date$i'], $_POST['start$i'], $_POST['end$i']");
    }
    echo "SLOT CREATION SUCCESSFUL!";
    echo "<form action='viewEvent.php' enctype='text/plain' method='post'>
        <input type='hidden' id='eventID' name='eventID' value= '$ID' />
        <input type='hidden' id='user' name='user' value= '$user' />
        <input type='submit' name='Submit' value='View Your Event'>
        </form>";
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Make Slots</title>
</head>

<body>
<?php
if(!isset($flag)){
    echo ("<form action='makeSlots.php' method='post'>");
        echo "<input type='hidden' id='quantity' name='quantity' value= '$num' />";
        echo "<input type='hidden' id='flag' name='flag' value= '1' />";
        echo "<input type='hidden' id='eventID' name='eventID' value= '$ID' />"
        echo "<input type='hidden' id='user' name='user' value= '$user' />"
    for ($i=0; $i<$num;$i++){
        echo ("Date:&nbsp; <input type='date' id='date$i' name='date$i' />
        <br/>");
        echo ("Time Begin:&nbsp; <input type='text' id='start$i' name='start$i' />
        <br/>");
        echo ("Time End:&nbsp; <input type='text' id='end$i' name='end$i' />
        <br/>");
        echo ("Total Slots:&nbsp; <input type='text' id='slots$i' name='slots$i' />
        <br/>");
    }
    echo ("<input type='submit' name='Submit' value='Enter' />");
    echo("</form>");
}
?>
</body>
</html>
4

2 に答える 2

1

これには連結を使用する必要があると思います:

$mysqli->query("INSERT INTO fi_slots VALUES $eventID," . $_POST["slots$i"] . ",...");
于 2012-12-04T03:33:39.193 に答える
0

正しい構文は次のようになります。

"{$_POST['slot' . $i]}"

中かっこは式を明確に表すため、コンパイラは文句を言わず、その中で連結を実行します。

重要

SQLインジェクションのリスクがあるため、これを行うことはお勧めできません。準備されたステートメントを使用する方法があります。

$stmt = $mysqli->prepare("INSERT INTO fi_slots VALUES (?, ?, 0, ?, ?, ?)");

$stmt->bind_param('s', $_POST['slots' . $i]);
// etc.
$stmt->execute();
于 2012-12-04T03:52:25.363 に答える