2012-07-23 74 views
0

我是一位新手php程序員。我有這樣的actionfrm.php,它運行時,我得到這個消息:我的PHP更新代碼沒有寫入數據庫

UPDATE personal 
    SET membername='test this', 
     sponsorid='102', 
     dateofjoining='2012-07-23', 
     address='13432 main', 
     city='pomona', 
     state='CA', 
     country='USA', 
     mobileno='8187321592', 
     countrycode='1', 
     dateofbirth='1988/05/03', 
     emailid='[email protected]' 
WHERE membername='test this' 

update query succeeded 

然而,這不是寫入數據庫。我把這個代碼放到phpmyadmin中,並得到這個msg:0行受到影響。

下面是代碼:

<?php include('dbconnect.php'); ?> 
<?php 
$membername=$_POST['membername']; 
if(isset($_POST['username']) and $_POST['username']!=""){ 
$sponsorid=$_SESSION['memberid_for_sp']; 
}else{ 
$sponsorid=0; 
} 
$dateofjoining=date("Y-m-d");; 
$address=$_POST['address']; 
$city=$_POST['city']; 
$state=$_POST['state']; 
$country=$_POST['country']; 
$mobileno=$_POST['mobileno']; 
$countrycode=$_POST['countrycode']; 
$dateofbirth=$_POST['dateofbirth']; 
$emailid=$_POST['emailid']; 
$myid=$_SESSION['memberid']; 

$query = "UPDATE personal SET membername='$membername', 
sponsorid='$sponsorid', 
dateofjoining='$dateofjoining', 
address='$address', 
city='$city', 
state='$state', 
country='$country', 
mobileno='$mobileno', 
countrycode='$countrycode', 
dateofbirth='$dateofbirth', emailid='$emailid' WHERE membername='$membername'"; 

echo $query; 
$checkresult = mysql_query($query); 
if ($checkresult) echo 'update query succeeded'; 
else echo 'update query failed'; 

mysql_close(); 

//return $frmdetail.php; 
?> 

請幫幫忙,我真的需要這種修正...我有這個頭疼的問題。

+5

歡迎來到Stack Overflow!請不要將'mysql_ *'函數用於新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。請參閱[**紅框**](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是很好的PDO教程](http://goo.gl/vFWnC)。 – ManseUK 2012-07-23 09:32:13

+2

你有沒有檢查你是否真的有這個名字的成員? 'WHERE membername ='$ membername''? – Peon 2012-07-23 09:32:57

+2

您是否有membername ='test this'的現有行?如果沒有,MySQL沒有對應的行進行更新。 – uzyn 2012-07-23 09:33:30

回答

2

您正在將成員名稱設置爲新值UPDATE personal SET membername='$membername',然後在WHERE條件中使用該新值。當然,它會返回0行,因爲表中不存在新值。

您必須在WHERE子句中使用不同的字段(例如id)才能更新成員名稱。

1

新的價值並不存在於表中,但你執行更新,所以你得到了這個消息:受影響的0行,

你應該使用替代,而不是更新。

當membername不存在時,mysql會調用insert,否則mysql會調用update。