2013-07-09 143 views
-2

所以我創建了一個編輯配置文件頁面,一切都很順利。但後來我想用類似的代碼來更新數據庫中的另一件事。它是一個非常奇怪的bugg,因爲當我添加了許多需要更新的值時,它拒絕工作。無法更新SQL數據庫

<?php 

session_start(); 

if(isset($_POST['submit'])){ 
$Creator = $_SESSION['username']; 
$dbName = $_POST['Name']; 
$dbBase_damage = $_POST['Base_damage']; 
$dbDamage = $_POST['Damage']; 
$dbPellets = $_POST['Pellets']; 
$dbAttackspeed = $_POST['Attackspeed']; 
$dbRS = $_POST['RS(first)']; 
$dbRS2 = $_POST['RS(consecutive)']; 
$dbLoaded = $_POST['Loaded']; 
$dbReserve = $_POST['Reserve']; 
$dbCritical = $_POST['Critical']; 
$dbAbility = $_POST['Ability']; 
$dbPiece_set = $_POST['Piece_set']; 
$dbBonus_set = $_POST['Bonus_set']; 
$dbDescription = $_POST['Description']; 

if ($dbName && $dbBase_damage && $dbDamage && $dbAttackspeed && $dbLoaded && $dbCritical) { 

mysql_connect ("localhost", "root", "") or die ("Could not connect"); 
mysql_select_db("weapons") or die ("Could not connect to the database");  

$wepquery = mysql_query("SELECT * FROM weapon WHERE Creator='$Creator' AND Name='$dbName'") or die ("The query could not be completed, please try again later!"); 
if (mysql_num_rows($wepquery) != 0) { 

mysql_query (" 

UPDATE weapon SET Base_Damage='$dbBase_damage', Damage='$dbDamage', 
Pellets='$dbPellets', Attackspeed='$dbAttackspeed', RS(first)='$dbRS', RS(consecutive)='$dbRS2', 
Loaded='$dbLoaded', Reserve='$dbReserve', Critical='$dbCritical', Ability='$dbAbility', Piece_set='$dbPiece_set', 
Bonus_set='$dbBonus_set' Description='$dbDescription' WHERE Creator='$Creator' AND Name='$dbName' 

") or die ("Could not update!"); 
echo "It just werks!"; 

}else echo ("That username could not be found!"); 
}else echo ("Something went wrong!"); 
    } 
    ?> 

當我使用這段代碼時,出現'Base_Damage'是未定義索引的錯誤。但是當我刪除'Base_Damage'時,它根本無法更新。我已經加倍檢查了數據庫並創建了「武器構想」,沒有任何問題。但由於某種原因,當我減少需要更新的值的數量時,它工作得很好。

<!DOCTYPE html> 

<html> 
<head> 
<meta charset="utf-8" /> 
<meta name="viewport" content="initial-scale=1.0" /> 
<title>TF2 NUT</title> 
<link rel="stylesheet" href="css/style.css" /> 
</head> 

<div id="Container"> 

<div id="header"> 
<h1>Welcome to TF2 NUT!</h1> 
</div> 

<div id="nav"> 

<?php 

include_once "nav.php"; 

?> 

</div> 

<div id="Content"> 
<h2>Update your submissions</h2> 
<form action="edit_sub.php" method="POST"> 
<table> 
<tr> 
    <td> 
    Choose weapon to edit: 
    </td> 
    <td> 
    <input type="text" name="Name" id="Name" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Base damage: 
    </td> 
    <td> 
    <input type="text" name="Base_damage" id="Base_damage" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Damage: 
    </td> 
    <td> 
    <input type="text" name="Damage" id="Damage" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Pellets: 
    </td> 
    <td> 
    <input type="text" name="Pellets" id="Pellets" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Attackspeed: 
    </td> 
    <td> 
    <input type="text" name="Attackspeed" id="Attackspeed" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Reload speed: 
    </td> 
    <td> 
    <input type="text" name="RS(first)" id="RS(first)" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Reload(consecutive): 
    </td> 
    <td> 
    <input type="text" name="RS(consecutive)" id="RS(consecutive)" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Loaded: 
    </td> 
    <td> 
    <input type="text" name="Loaded" id="Loaded" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Reserve: 
    </td> 
    <td> 
    <input type="text" name="Reserve" id="Reserve" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Critical: 
    </td> 
    <td> 
    <input type="text" name="Critical" id="Critical" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Ability: 
    </td> 
    <td> 
    <input type="text" name="Ability" id="Ability" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Piece set: 
    </td> 
    <td> 
    <input type="text" name="Piece_set" id="Piece_set" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    Bonus set: 
    </td> 
    <td> 
    <input type="text" name="Bonus_set" id="Bonus_set" /> 
    </td> 
</tr> 
</table> 
Description: 
<br /> 
<textarea style="resize: none;" rows="8" cols="40" id="Descripton" name="Description"></textarea> 
<br /> 
<input type='submit' name="submit" value='Update' /> 
</form> 
</div> 

<div id="aside"> 

</div> 

<div id="footer"> 

<h6>Responsible for the stuff on this site is Anton Magnusson</h6> 
<h6>If I have done something wrong(I hope not ;_;) just contact me: [email protected]</h6> 

</div> 

</div> 

:;如果你想知道的「造物主$ = $ _SESSION [‘用戶名’]」,我這取決於誰是從「nav.php」 我的HTML代碼登錄得到造物主的用戶名

任何人都可以提供幫助嗎? :P

+0

首先,你應該停止使用mysql_命令,因爲它們將在不久的將來被取消。而是使用mysqli或PDO。 – Suyash

+0

所以,你從查詢中得到一個錯誤,但是當你編輯它的查詢時,它起作用了?聽起來像查詢要麼有語法錯誤,要麼正在引用一個不存在的數據庫對象。格式化查詢的可讀性並顯示數據庫表的結構。 – David

+2

1)Post表結構2)這可能是一個區分大小寫的問題,將字段名稱括在'-s –

回答

2

我想你如果statment不是可讀這就是爲什麼你不可能更新

  • 第一你的名字name="Base_damage" IA不相同,您的可變折射率$dbBase_Damage = $_POST['Base_Damage'];

應該

$dbBase_Damage = $_POST['Base_damage']; // with small d 

嘗試重新這樣做

 if ($dbName && $dbBase_Damage && $dbDamage && $dbAttackspeed && $dbLoaded && $dbCritical) 

編輯:

在查詢替換該

 RS(first)='$dbRS', RS(consecutive)='$dbRS2' 

通過

 `RS(first)`='$dbRS', `RS(consecutive)`='$dbRS2' 

EDIT2:

請更換

 or die ("Could not update!"); 

or die(mysql_error()); // like that you can see what error or what goes wrong. 

EDIT3。

 Bonus_set='$dbBonus_set' , Description= 
          ^^//you missed coma here 
+0

Eh?爲什麼upvote(s)? – Strawberry

+0

,因爲有人叫'草莓'誰判斷和reclams爲他人的聲譽。張貼您的答案並獲得聲譽。並停止談論他人的聲譽 –

+0

好吧,現在有道理。 – Strawberry