2013-03-20 47 views
0

我正在網站上管理員可以編輯他們已經創建的計劃。他們可以點擊計劃中的任何項目進行編輯。例如,他們可以點擊班次開始時間,然後將他們引導到可以更新值的頁面。無法使用php語句向MySQL輸入數字

不幸的是,我一直沒能得到這個對於每個值工作。它似乎是文本值工作得很好,但我得到一個語法錯誤,當它是一個數字。

這裏是我使用的是什麼更新:

$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中也不起作用。我不知道接下來要檢查什麼!

誰能幫助我與我的語法在這裏???謝謝!

+0

是你使用類型的列類型'int' (或其他數字)? – hexblot 2013-03-20 15:18:59

+0

Newval不應該是一個字符串,特別是如果您的數據庫設置爲該值的整數。 – karmafunk 2013-03-20 15:19:33

+0

一切的列類型都是varchar。當我試圖改變一個日期(它已經嵌入)時,它仍然給我一個錯誤,所以我不相信這是一個列錯誤。我甚至沒有引號嘗試,但我得到同樣的錯誤。 – brokekidweb 2013-03-20 15:20:31

回答

0

的$類型變量包含空格。從中取出空間。

更具體地「煎熬1_starttime」包含空格。無論您將$ type設置爲「shift_ 1_starttime」,都可以從中刪除空格。或者,如果多數民衆贊成它是如何在數據庫中定義與反引號`圍繞着它

$sql = "UPDATE $tablename SET `$type`='$newval' WHERE week=$week"; 
+0

太棒了!我是空間給我的問題。我其實在另一頁上有錯誤。我有一種感覺是愚蠢的。謝謝您的幫助! – brokekidweb 2013-03-20 15:27:53

+0

@ user1760090請接受它作爲您的答案。 – 2013-03-20 15:33:14

1

在數字更新查詢周圍放置引號,

$sql = "UPDATE $tablename SET $type='$newval' WHERE week='$week'";