Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and the Yahoo Answers website is now in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

將PHP陣列存入MYSQL

一個有關PHP的小問題

假設我在MYSQL的資料庫已經新增一個資料表

資料表欄位為"id"和"name"

我在PHP有一個陣列如下

$users = array("id"=>"001","name"=>"jimmy");

請問要怎麼寫才能讓陣列裡的001和jimmy寫入資料庫裡"id"和"name"的欄位裡呢?

謝謝

3 Answers

Rating
  • Sam
    Lv 6
    1 decade ago
    Favorite Answer

    $users = array("id"=>"001","name"=>"jimmy");

    $fields = implode(",",array_keys($users));

    $values = implode("','",$users);

    $sql = "INSERT INTO `table` ({$fields}) VALUES ('{$values}')";

    $sql = mysql_query($sql);

    這樣一來不管你有多少的資料欄位都可以處理。

    2010-07-18 20:04:13 補充:

    抱歉!最近select sql做太多。

    最後一行改成mysql_query($sql);即可。

    2010-07-18 22:30:16 補充:

    寫程式要注意一個重點。

    就是程式未來的擴展性。

    最理想的狀態就是不管你改你的前端介面及資料庫怎麼改。

    都不需要去動你的程式。

    敏捷開發方法中有一個最完美詮釋的一句話:

    「怎麼樣寫程式最快?不要寫最快。」

    所謂不要寫並不是真的什麼都不寫。

    而是不管別人怎麼去更動他們的介面。

    我們都不需要再改我們的程式。

    2010-07-18 22:32:05 補充:

    寫程式不是短,或是寫個一行、二行就好。

    解決當下的問題而無法解決大量的問題等於沒有解決問題。

    這一點,我希望其他的回答者在回答問題時。

    好好的深思這樣的問題。

    至於安全性……

    那是本來就應該要做的事,而非特別提醒。

    2010-07-19 11:43:31 補充:

    就UI來說。

    我想聰明人都知道要把載入介面和程式切開來用吧。

    樓下所言的狀況是把載入資料的介面和程式混在一起了。

    這才是造成程式碼改來改去的元兇。

    把載入的介面、程式、資料庫各自獨立。

    程式碼就可以不需要去管來源。

    他只需要載入的項目是一個陣列。不管這個陣列資料是怎麼取得的。

    另外……樓下所言的年資倒沒必要搬出來說就是了。

    要不然還真的不知道樓下是要跟我比?還是跟一個二十年的程式設計師比。

    2010-07-19 11:46:17 補充:

    假如說要講在知識家秉持的原則我很簡單:

    我不把任何人當初學者看。就算你真的只是個初學者。

    一但我把你當初學者看。

    我教你的東西很基本,但你就不會成長。

    任何人可以就他不懂的問題問。

    而我提出的會是比較理想的解決方案。

    我解問題不會只解你當下的問題。

    我會連你未來遇到的可能性一起解。

    我上來不是為了獲取最佳解答。

    我上來只有一個目的:讓所有的程式設計師都早點回家吃飯。

    2010-07-19 11:47:15 補充:

    所以我提出程式時。

    一概是以敏捷開發方法為前提。

    能接受的就接受了。

    不能接受的請繼續加班。

    2010-07-19 11:50:01 補充:

    假如樓下的閣下對於這一篇乃至於另一篇你所提的意見有所疑慮。

    倘若閣下是住在北部。

    我黃金小狐狸誠摯的邀請您前來參加我們每周日一聚的「敏捷開發研討會」。

    文字的敘述往往容易產生誤會,但人與人的面對面我想會比文字的敘述更好。

    想必樓下的閣下也不會介意的持續朝更好的目標進步不是嗎?

  • 1 decade ago

    這個問題喔!我挖出以前的程式了!你試看看能不能用

    http://phpwrite.blogspot.com/2010/07/php-sql.html

  • 1 decade ago

    如果沒有其它的需要,

    您可以直接使用 $users['id'] 與 $users['name'],

    SQL 語法可清析呈現,

    也可適用於 $users 的 key 與資料庫的欄位名稱不對稱的情況。

    示範程式碼如下:

    <?php

    $users = array("id"=>"004", "name"=>"sam");

    $sql = 'INSERT INTO `users` (`id` , `name`) VALUES ("' . $users['id'] . '" , "' . $users['name'] . '")';

    ?>

    接下來使用 mysql_query 執行 SQL 語法即可。

    2010-07-18 22:24:35 補充:

    請問您的 $user 的內容是使用者輸入的嗎?

    如果是的話,

    最好不好直接寫入資料庫,

    請使用 htmlspecialchars or stripslashes or mysql_real_escape_string 等 functions 處理之後,

    再寫入資料庫較為安全。

    2010-07-19 10:28:42 補充:

    樓上所言甚是,

    不過似乎沒考慮到一個情況,

    若是資料庫有作修改,

    欄位名稱有變,

    連這個 $users 的 key 都要改變。

    而且若是寫入 DB 的資料並非全部來自於 $users 這個 array 呢?

    SQL 語法可以清楚呈現對於維護來說也是好的。

    而 SQL 語法不見得要與 array 的 key 綁在一起吧!

    回答一個問題本來就可以從不同的角度切入,

    沒有絕對的是與非。

    別人的回答也有一定的參考價值,

    除非回答是錯誤的,

    這是我在 "知識+" 回答 PHP 五年半一直秉持的原則,

    與所有在 "知識+" 回答問題的網友共勉。

    Source(s): 自己, 自己, 自己
Still have questions? Get your answers by asking now.