0

管理者が作成済みのスケジュールを編集できる Web サイトで作業しています。スケジュールの項目をクリックして編集できます。たとえば、シフト開始時刻をクリックすると、値を更新できるページに移動します。

残念ながら、これをすべての値で機能させることはできませんでした。テキスト値は問題なく機能しているようですが、数値の場合は構文エラーが発生します。

更新に使用しているものは次のとおりです。

$type = $_GET['type'];
$value = $_GET['value'];
$week = $_GET['week'];
$newval = $_POST['newval'];
if(strlen($newval) > 0)
{
    include '../dbinfo.php';
    $type = $mysqli->real_escape_string($_POST['type']);
    $week = $mysqli->real_escape_string($_POST['week']);
    $tablename = $mysqli->real_escape_string("cs" . $_SESSION['squadron']);
    $newval = $mysqli->real_escape_string($newval);
    if((is_numeric($newval)))
    {
        $sql = "UPDATE $tablename SET $type=$newval WHERE week=$week";
    }
    else
    {
        $sql = "UPDATE $tablename SET $type='$newval' WHERE week=$week";
    }
    if($result = $mysqli->query($sql))
    {
        echo "Your specififed changed was completed successfully!<br>";
        echo "<a href='edit.php?week=" . $week . "'>Continue editing</a>";
    }
    else
    {
        echo mysqli_error($result);
    }
}

文字列を変更すると、SQL ステートメントが次のようになります。

UPDATE cs14 SET shift_1_name='Test' WHERE week=1 (this works)

数値を変更すると、SQL ステートメントが次のようになります。

UPDATE cs14 SET shift_ 1_starttime=940 WHERE week=1 (this doesn't work)

それは私にMySQLエラーを与えています:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1_starttime=940 WHERE week=1' at line 1

私はすでにこのエラーを調査しており、構文を何度も確認しました。phpmyadmin でも機能しません。次に何をチェックすればいいのかわからない!

ここで私の構文を手伝ってくれる人はいますか??? ありがとう!

4

2 に答える 2

1

数値更新クエリでは、引用符で囲みます。

$sql = "UPDATE $tablename SET $type='$newval' WHERE week='$week'";
于 2013-03-20T15:21:13.090 に答える
0

$type 変数にスペースが含まれています。そこからスペースを削除します。

具体的には、「shift_1_starttime」にスペースが含まれています。$type を「shift_ 1_starttime」に設定する場所はどこでも、そこからスペースを削除します。または、データベースでそのように定義されている場合は、バッククォートで囲みます `

$sql = "UPDATE $tablename SET `$type`='$newval' WHERE week=$week";
于 2013-03-20T15:19:08.297 に答える