2012-09-12 41 views
-2

我一直在試圖讓這段代碼更新,而且它不起作用。我一直在重新閱讀它,並查看其他示例幾個小時,並需要一些幫助才能使其發揮作用。它是mysql數據庫中成員表的基本UPDATE腳本。我有MySQL版本5.0.91。沒有任何我嘗試過的。當在瀏覽器中上傳並測試時,返回echo「更新查詢失敗」,我粗體顯示了失敗的部分。我只是無法找出原因。當我檢查mysqladmin時,表格沒有更新。mysql 5.0 UPDATE語法

$host="mysqlhost"; // Host name 
$username="mysqlusername"; // Mysql username 
$password="mysqlpassword"; // Mysql password 
$db_name="mydbname"; // Database name 
$tbl_name="brothers"; // Table name 


// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 

mysql_select_db("$db_name")or die("cannot select DB"); 

// Define $myusername and $mypassword 
$mymname=$_POST['mymname']; 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
$myconfirmpassword=$_POST['myconfirmpassword']; 
$mysnumber=$_POST['mysnumber']; 
$myemail=$_POST['myemail']; 



if ($mypassword !== $myconfirmpassword) { 
die ("passwords do not match. Try again!"); 




if (isset($_COOKIE['fname'])) { 
$myfname = ($_COOKIE['fname']); 
} 

else { 
die('could not find cookie fname'); 
} 

if (isset($_COOKIE['lname'])) { 
$mylname = ($_COOKIE['lname']); 
} 

else { 
die('could not find cookie lname'); 
} 

$sql="SELECT * FROM $tbl_name WHERE fname='$myfname' AND lname='$mylname'"; 
$result=mysql_query($sql)or die("no sql"); 

while($row = mysql_fetch_array($result)) 
{ 
$fname=$row['fname']; 
    if (!$fname) { 
     die('variable not received'); 
     } 
$lname=$row['lname']; 
$position=$row['position']; 
$committee=$row['committee'];} 


if($mypassword==$myconfirmpassword) { 

$query= "UPDATE brothers 
SET `mname`='$mymname' WHERE `fname` ='$fname'"; 

$chechresult= mysql_query($query) or die (mysql_error()); 
if (!$checkresult) echo 'update query failed'; 


elseif ($checkresults) { 
    echo'update query success'; 
setcookie('position', $position, time()+86400,'/'); 
setcookie('committee', $committee, time()+86400,'/'); 


$headsuccess=header("location:done_registration.php"); 
$headsuccess; 
if (!$headsuccess) { 
    die('Could not redirect success registration'); } 

} 
} 

else{ 
$headlogin=header("location:error_registration.php"); 
$headlogin; 
if (!$headlogin) { 
    die('Could not redirect registration error'); } 
} 

回答

1
$chechresult= mysql_query($query) or die (mysql_error()); 
if (!$checkresult) echo 'update query failed'; 

你在 「$ chechresult =」 拼錯 「K」 與 「H」

+0

謝謝。我從字面上找到了我的錯誤,並將刪除該問題。但是,對於其他人來說,這是一種學習體驗。不要像我這樣的白癡和拼寫錯誤(* facepalm *) 感謝您的幫助,現在一切正常。 – Chaky31

+0

@KyleRoseberry - 一般來說,一旦問到問題,不要刪除它 - 特別是如果已經有答案的話。有人可能會編輯他們的答案,或者添加一個新的答案,並且對於所有這些努力來說,這是非常令人討厭的,只是爲了得到一個錯誤消息':)' – halfer

0

你拼錯$chechresult - 應該是$checkresult;另外,$fname應該是$myfname

可能值得在屏幕上回顯$query,並直接在數據庫中嘗試 - 無論是在控制檯還是在phpMyAdmin中。由於$fname是空的(錯誤var)你的WHERE子句是錯誤的;猜測它正在影響零行,所以正確執行。

請記住,在此代碼中存在一些SQL注入安全問題 - 請確保在將其添加到查詢之前轉義您的值。更好的是,如果你升級到PDO,你可以使用參數化,這將爲你逃脫。

+0

如何逃脫的代碼。我對這個東西很新。這是我從頭開始構建的第一個網站。你能給我一個如何防止sql注入的例子嗎? – Chaky31

+0

閱讀所有你需要的函數,加上例子,[這裏](http://uk.php.net/manual/en/function.mysql-real-escape-string.php)':)' – halfer

0

嘗試打印包含UPDATE命令的$ query字符串,並在mysql控制檯中執行後執行它。

+0

這應該是做一個評論而不是答案。 – fancyPants