首頁>Web>source

我正在使用自定義php代碼執行資料插入,删除,更新和其他任務.我可以通過两種不同的方式將資料插入表中,

$wpdb->insert($table_name, array('id' => NULL, 'name' => '$name', 'email' => '$email', 'city' => '$city'));

$sql = "INSERT INTO $table_name VALUES('', '$name', '$email', '$city')";
$wpdb->query($sql);

使用 wpdb->query()是一个好习惯吗 通過將查詢傳遞给函式来代替每次使用函式,而不是使用诸如 insert()之類的专用函式 和 delete() 等等? 如果不是,那麼這種方法的缺點是什麼?

最新回復
  • 6月前
    1 #

    如果您仔细研究一下源代碼,就会看到 $wpdb->insert() 將使用 ->query() 在引擎盖下.所以應该一樣吧?

    不是那麼簡單.它不只是使用 ->query() 還有 ->prepare() ,這是最佳做法.同時,在您的代碼示例中,您可能刚刚開始接受SQL註入。

    這裏的要點:如果這是一个簡單的操作,那麼 等方法工作-使用它们.它们已经過測試,风险很小.編寫自己的查詢总是有使自己陷入诸如SQL註入之類的麻煩的风险。

  • 6月前
    2 #

    這取決於

    建立表格

    使用 ->insert() ,它將建立表(如果不存在),並在其更改時更新其模式.没有查詢来測試该表是否存在,對其进行更新或建立, dbDelta 為你做.它以建立表的查詢作為引數,並且必须以特定的方式設置其格式,否則它將無法正常工作。

    dbDelta 不適合建立表。

    插入/删除/更新行

    否,請使用 wpdb->query 以及其他特定方法.使用 wpdb->insert 如果没有更具體的方法

    關於自定義表格的註釋

    仅仅是因為您使用了自定義表格,並不意味着它会更快/更好。

    大多數人對資料庫和表設計都不了解,無法設計出效能较高的表.他们可能认為自己效率更高/效能更高,但是却忽略了添加適当的键,忘記了索引,没有针對所執行的查詢而不是针對儲存的資料型別優化表的方法。

    因此,對於大多數人而言,自定義表会匯致大量的管理,前端UI工作,麻煩的原始SQL編寫以及潜在的安全問题,所有這些都会複製基本功能.加上由於設計不当而無法擴充套件的表。

    wpdb->query

  • wordpress:為什麼auto_update_plugin掛钩禁用管理?
  • drupal:您如何在Drupal中添加/編輯代碼?