2014-01-16 49 views
0

我正在創建一個頁面,其中取決於HTML表單數據從數據庫中插入/更新/刪除。通過PHP修復MySQL查詢

至於UPDATE去,我沒有更多的想法如何解決它。問題是,你可以更新任何你想要的東西(例如nazwa_klubu,如果假設你已經改變了舊的nazwa_klubu,並想在數據庫中保留新名稱(nazwa klubu =俱樂部名稱),則鍵入你的名字想換到Nazwa klubuWprowadz zmiany形式,然後在第二Nazwa klubu你鍵入要更改的名稱。

  • 我相信這是一個小的升級,使這一切工作,而不必把無數如果的情況下,但這是我的PHP第三天,所以我很困惑。

編輯:因此,基本上,如果所有字段都填滿,此功能正常工作。但即使我們填充了一些領域,我也希望它能夠工作 - 嗯,我希望你明白我的觀點。如果你甚至不能正確使用它,那麼UPDATE的意義何在?修辭Q.

,這是它目前是如何工作的:

UPDATE Koncerty SET nazwa_klubu = 'NewClubName', WHERE nazwa_klubu = 'OldClubName' AND

但很明顯,我想這是這樣工作的:

UPDATE Koncerty SET nazwa_klubu = 'NewClubName' WHERE nazwa_klubu = 'OldClubName'

不管有多少輸入的I」我將填寫此表格。前5個輸入負責SET方,而後5個輸入負責WHERE條。

這裏的功能

function update($table, $data) 
{ 
$new_klub = 'nazwa_klubu = ' . '\'' . $data[data1] . '\','; 
$new_adres = 'adres_klubu = ' . '\'' . $data[data2] . '\','; 
$new_zespol = 'nazwa_zespolu = ' . '\'' . $data[data3] . '\','; 
$new_ile = 'ilosc_czlonkow_zespolu = ' . '\'' . $data[data4] . '\','; 
$new_wystep = 'data_wystepu = ' . '\'' . $data[data5] . '\','; 
$klub = 'nazwa_klubu = ' . '\'' . $data[data6] . '\' AND'; 
$adres = 'adres_klubu = ' . '\'' . $data[data7] . '\' AND'; 
$zespol = 'nazwa_zespolu = ' . '\'' . $data[data8] . '\' AND'; 
$ile = 'ilosc_czlonkow_zespolu = ' . '\'' . $data[data9] . '\' AND'; 
$wystep = 'data_wystepu = ' . '\'' . $data[data10] . '\''; 

if (empty($data[data1]) AND empty($data[data2]) AND 
    empty($data[data3]) AND empty($data[data4]) AND empty($data[data5])) { 

    echo '<span class="error">Zabezpieczenie: Musisz wpisac jakie zmiany chcesz wprowadzic</span>'; 
    exit; 
} 

if (empty($data[data6]) AND empty($data[data7]) AND 
    empty($data[data8]) AND empty($data[data9]) AND empty($data[data10])) { 

    echo '<span class="error">Zabezpieczenie: Musisz wpisac na czym chcesz dokonac zmian</span>'; 
    exit; 
} 

if (empty($data[data1])) { 
    $new_klub = ''; 
} 
if (empty($data[data2])) { 
    $new_adres = ''; 
} 
if (empty($data[data3])) { 
    $new_zespol = ''; 
} 
if (empty($data[data4])) { 
    $new_ile = ''; 
} 
if (empty($data[data5])) { 
    $new_wystep = ''; 
} 

if (empty($data[data6])) { 
    $klub = ''; 
} 
if (empty($data[data7])) { 
    $adres = ''; 
} 
if (empty($data[data8])) { 
    $zespol = ''; 
} 
if (empty($data[data9])) { 
    $ile = ''; 
} 
if (empty($data[data10])) { 
    $wystep = ''; 
} 

    $safe_updates = "SET SQL_SAFE_UPDATES = 0"; 

    $sql = "UPDATE $table SET 
    $new_klub 
    $new_adres 
    $new_zespol 
    $new_ile 
    $new_wystep 
    WHERE 
    $klub 
    $adres 
    $zespol 
    $ile 
    $wystep 
    "; 

    echo $new_klub; 

    mysql_query($safe_updates); 
    $result = mysql_query($sql); 
    if (!$result) { 
     echo '<span class="error">' . mysql_error() . '</span><br>' . $sql . ''; 
    } 
    else { 
     echo '<span class="success">Wprowadzono zmiany' . $sql . '</span><br>'; 
    } 

} 
+0

'AND'後面是什麼? –

+0

那麼,在這個例子中沒有任何東西,因爲在其他字段中的輸入是空的,它會在每個變量之後加上','s和'AND',以使它在完整查詢中工作。閱讀有問題的**編輯**部分。 順便說一下,當你閱讀代碼時,這一切都很清楚。 –

+0

我想你在$ new_wystep的最後有一個額外的逗號,所以它抱怨WHERE正好在它之後。 –

回答

3

你不應該使用堆棧溢出的地方問這樣的「修復我的代碼」的問題的代碼。

但是,你可能只是把你的所有$new_變量到一個數組

$new = array(
    'klub' => 'nazwa_klubu = ' . '\'' . $data[data1] . '\',', 
    'adres' => 'adres_klubu = ' . '\'' . $data[data2] . '\',', 
); 

然後你就可以爆你的陣列

$sql = implode(', ', $new); 

然後你就不會得到尾隨逗號。然後使用與AND相同的邏輯,你會看到你的SQL看起來沒問題。

+0

+1不錯的答案。 –

+0

接受。處理一些小的更正,比如先刪除數組中的每個元素的第一個',' –