2014-06-18 60 views
0

首先,我想說我對這種類型的東西非常不好,所以我的代碼可能完全沒用。PHP/MySQL。無法更新數據:查詢是空的

任務是創建一個系統,要求用戶掃描兩個ID,用戶ID和itemID。掃描成功後,我希望將這些值傳輸到PHP文檔。 這裏我想運行一個MySQL查詢,它將更新itemID與數據庫匹配的userID的值。

所以我的問題是,我運行我的查詢後得到此消息: userID:202 itemID:8204無法更新數據:查詢是空的。我的數據庫仍然是空的。

我認爲問題在於查詢無法讀取$ _GET變量。但我不知道,所以請幫助我,謝謝!

這是我的形式:

<form id="checkin" name="checkin" action="test.php"> 
<input type="button" onclick="checkIn()" value="Check in Item"> 
</form>  

功能:

<script> 
function checkIn(){ 
var userID=parseInt(prompt ("Scan userid"), 10); 
var itemID=parseInt(prompt ("Scan itemid"), 10); 
if(userID!=null && itemID!=null){ 
window.location.href= "http://localhost/webapp/test.php?userID=" + userID + "&itemID=" + itemID; 
alert ("working so far userID:"+ userID + " --- itemID:" + itemID);    
} 
} 
</script> 

最後的PHP:

$con = mysql_connect("localhost", "root", "", "book1"); 
$db = mysql_select_db('book1'); 

if (isset($_GET["userID"]) && isset($_GET["itemID"])) { 
    $userID1 = (int)$_GET["userID"]; 
    $itemID2 = (int)$_GET["itemID"]; 
    $test = "userID: ".$_GET["userID"]." "."itemID: ".$_GET["itemID"]; 
    echo $test; 
} 
if (!$con) { 
    die('Could not connect: '.mysql_error()); 
} 
$upd = mysql_query('UPDATE INTO booking SET userID ="$userID" WHERE ID ="$itemID'); 

$retval = mysql_query($upd, $con); 
if (!$retval) { 
    die('Could not update data: '.mysql_error()); 
} 
echo "Updated data successfully\n"; 
+0

'更新到預訂'應該是'更新預訂' –

+0

沒有直接關係到你的問題,但你可能想考慮使用PDO。投射到'int'似乎是一種非常醜陋的方式來清理SQL的輸入。 – tangrs

+0

是的,我已經考慮使用PDO,我想我會在不久的將來。我只想讓這個功能先行工作。 – Snoken

回答

0

參數無效@mysql_connect()

$con=mysql_connect("localhost", "root", "") or die ('Connection failed' . mysql_error()); 

$db = mysql_select_db('book1',$con); 

UPDATE INTO需要更改爲UPDATE ....

你也需要userID指定分配給$itemID2變量$userID1itemID。但在你的查詢中是錯誤的。查詢現在已更新。

Mysql Manual

WHERE ID ="$itemID'

$upd = mysql_query("UPDATE booking SET userID ='$userID1' WHERE ID ='$itemID2'", $con); 

附註:也不翼而飛報價的mysql_ *函數的用法是不建議,改用mysqli_ *

+0

修復所有的問題,現在我得到一個語法錯誤說:你的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,在第1行的'1'附近使用正確的語法。請幫助我!謝謝! – Snoken

+0

@ user3751216在變量中存在問題。我已經更新了代碼。請現在嘗試。 – fortune

0

你的數據庫連接字符串可能看起來mysqli_。在mysql_中,您不想指定DB Name作爲參數。

$con=mysql_connect("localhost", "root", "", "book1"); 

這是應該的,

$con=mysql_connect("localhost", "root", ""); 

您在UPDATE查詢添加不必要INTO ..

Refer the manual 試試這個,

UPDATE booking SET .... 

代替,

UPDATE INTO booking SET .... 

您可能還需要閱讀此:Why shouldn't I use mysql_* functions in PHP?

0

糾正你的連接按說明書並正確Update語法

檢查PHP CONNECTION手冊

$con=mysql_connect("localhost", "root", "") OR die('Could not connect'); 
$db = mysql_select_db('book1',$con); 
if(isset($_GET["userID"]) && isset($_GET["itemID"])){ 
$userID1= (int) $_GET["userID"]; 
$itemID2= (int) $_GET["itemID"]; 
$test = "userID: ". $_GET["userID"] . " " . "itemID: ". $_GET["itemID"]; 
echo $test; 
} 
$upd = mysql_query("UPDATE booking SET userID='".$userID."' WHERE ID=$itemID"); 

$retval = mysql_query($upd); 
if(! $retval){ 
    die('Could not update data: ' . mysql_error()); 
} 
echo "Updated data successfully\n"; 
} 
+0

修復了所有的問題,現在我得到一個語法錯誤:你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第1行的'1'附近使用正確的語法。請幫助我!謝謝! – Snoken

+0

如果您的問題沒有解決,那麼您如何接受答案? – Sadikhasan

+0

嗯,我是新來的,所以我點擊接受答案之前,我檢查即將到來的錯誤。 – Snoken

0

@ user3751216它在這一行

$upd = mysql_query("UPDATE booking SET userID='".$userID."' WHERE ID=$itemID"); 

$retval = mysql_query($upd); 

如果你把你的代碼,這樣所產生的「語法」問題的錯誤,它應該解決SQL語法的問題

$upd = ("UPDATE booking SET userID='".$userID."' WHERE ID=$itemID"); 

$retval = mysql_query($upd); 

讓我現在如果你已經解決了這個問題。

+0

我真的不明白你在寫什麼...... –