管理者が作成済みのスケジュールを編集できる 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 でも機能しません。次に何をチェックすればいいのかわからない!
ここで私の構文を手伝ってくれる人はいますか??? ありがとう!