如何使用wpdb插入数据

Nid*_*ida 27 php wordpress wpdb

我已经知道如下了

$name="Kumkum";
$email="kumkum@gmail.com";
$phone="3456734567";
$country="India";
$course="Database";
$message="hello i want to read db";
$now = new DateTime();
$datesent=$now->format('Y-m-d H:i:s');    
global $wpdb;
$sql = $wpdb->prepare(
 "INSERT INTO `wp_submitted_form`      (`name`,`email`,`phone`,`country`,`course`,`message`,`datesent`) values ("
 $name, $email, $phone, $country, $course, $message, $datesent. ')")';

$wpdb->query($sql);
Run Code Online (Sandbox Code Playgroud)

它不起作用......它会引发错误......请帮我纠正它.

Nad*_*adh 81

使用$wpdb->insert().

$wpdb->insert('wp_submitted_form', array(
    'name' => 'Kumkum',
    'email' => 'kumkum@gmail.com',
    'phone' => '3456734567', // ... and so on
));
Run Code Online (Sandbox Code Playgroud)

  • 很抱歉打破了一个古老的主题,但我想注意`$ wpdb-> insert`为你清理你的数据,不像`$ wpdb-> query`,它要求你用`$ wpdb-> prepare清理你的查询. .两者之间的区别是`$ wpdb-> query`允许你编写自己的SQL语句,其中`$ wpdb-> insert`接受一个数组并为你处理sanitizing/sql. (21认同)
  • 当然,然后用变量替换这些字符串. (3认同)
  • 您需要第3个参数来指示每个参数的数据类型,否则它们将全部作为字符串进行处理.对于"int,float,string"参数,它将是:array('%d','%f','%s') (3认同)
  • 您动态地表示什么?`“ name” => $ name,`? (2认同)

小智 18

只需使用wpdb->insert(tablename, coloumn, format)和wp将准备该查询

<?php
global $wpdb;
$wpdb->insert("wp_submitted_form", array(
   "name" => $name,
   "email" => $email,
   "phone" => $phone,
   "country" => $country,
   "course" => $course,
   "message" => $message,
   "datesent" => $now ,
));
?>
Run Code Online (Sandbox Code Playgroud)


Fra*_*ank 8

尝试这个

我最近倾向于$wpdb->prepare HERE并添加到我们的免费课程预订插件中,该插件已在 wordpress.org 上获得批准,并将很快上线:

global $wpdb;
$tablename = $wpdb->prefix . "submitted_form";

$name     = "Kumkum"; //string value use: %s
$email    = "kumkum@gmail.com"; //string value use: %s
$phone    = "3456734567"; //numeric value use: %d
$country  = "India"; //string value use: %s
$course   = "Database"; //string value use: %s
$message  = "hello i want to read db"; //string value use: %s
$now      = new DateTime(); //string value use: %s
$datesent = $now->format('Y-m-d H:i:s'); //string value use: %s

$sql = $wpdb->prepare("INSERT INTO `$tablename` (`name`, `email`, `phone`, `country`, `course`, `message`, `datesent`) values (%s, %s, %d, %s, %s, %s, %s)", $name, $email, $phone, $country, $course, $message, $datesent);

$wpdb->query($sql);
Run Code Online (Sandbox Code Playgroud)

谢谢-弗兰克


T.T*_*dua 6

推荐的方式(如codex 中所述):

$wpdb->insert( $table_name, array('column_name_1'=>'hello', 'other'=> 123), array( '%s', '%d' ) );
Run Code Online (Sandbox Code Playgroud)

因此,您最好对值进行消毒 - 始终考虑安全性。


Roh*_*mar 5

你必须quotes正确检查你的,

$sql = $wpdb->prepare(
    "INSERT INTO `wp_submitted_form`      
       (`name`,`email`,`phone`,`country`,`course`,`message`,`datesent`) 
 values ($name, $email, $phone, $country, $course, $message, $datesent)");
$wpdb->query($sql);
Run Code Online (Sandbox Code Playgroud)

或者你可以使用像,

$sql = "INSERT INTO `wp_submitted_form`
          (`name`,`email`,`phone`,`country`,`course`,`message`,`datesent`) 
   values ($name, $email, $phone, $country, $course, $message, $datesent)";

$wpdb->query($sql);
Run Code Online (Sandbox Code Playgroud)

阅读http://codex.wordpress.org/Class_Reference/wpdb