我想在wordpress的表中插入一些数据然后返回它的自动增加id值。
我这样做,但这两个都有错误:
INSERT INTO wp_sho_app_form (job_id, first_name, last_name) VALUES(1, 'Caldwell', 'Estrada');
SELECT LAST_INSERT_ID();
此代码字在MySql中很好,但是$wpdb
我收到此错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行'SELECT LAST_INSERT_ID()'附近
我在$wpdb->query
和$wpdb->get_results
之间调用此声明,但他们都有错误。
我出于某些原因不想使用$wpdb->insert
,我应该使用这种类型的代码。
答案 0 :(得分:3)
正确的方法是使用insert_id
。
$lastid = $wpdb->insert_id;
如果你有另外的查询,如果你有新的条目和大量的流量,它就不一致了。这可能会导致有线问题。
这只是在插入后才能使用它们。不要与框架作斗争。
答案 1 :(得分:0)
您可以运行自定义查询,然后运行另一个查询以选择表格中的最后一项。如果您使用的是独立的php文件,则需要包含wp-load.php文件以获取wordpress函数。
$query = "
INSERT
INTO wp_sho_app_form
(job_id, first_name, last_name)
VALUES
(1, 'Caldwell', 'Estrada')
";
$wpdb->query($query);
$query = "
SELECT *
FROM wp_sho_app_form
ORDER BY col_id desc
LIMIT 1
";
$wpdb->query($query);
答案 2 :(得分:0)
wpdb无法进行多次查询。我最后找到的解决方案是使用direclty MySqli。我写了这两个函数来做到这一点。可能对sombody有用。因为在ajax wordpress中没有加载所以我检查发现 wp-config fle以获取连接的详细信息:
public static function run_query($query)
{
$wp_config_path = script_generator::get_wp_config_path();
if($wp_config_path == null){
echo 'Could not found wp_config file!';
return;
}
require_once $wp_config_path;
$mysqli = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result_count = 0;
$result_set = array();
if ($mysqli->multi_query($query)) {
do {
$current_result_count = 0;
$current_result = array();
if ($result = $mysqli->use_result()) {
while ($row = $result->fetch_row()) {
$current_result[$current_result_count] = $row;
$current_result_count++;
}
$result->close();
}
$result_set[$result_count] = $current_result;
if ($mysqli->more_results()) {
$result_count++;
}
} while ($mysqli->next_result());
}
/* close connection */
$mysqli->close();
return $result_set;
}
function get_wp_config_path(){
$dir = dirname(__FILE__);
do {
if( file_exists($dir."/wp-config.php") ) {
return $dir."/wp-config.php";
}
} while( $dir = realpath("$dir/..") );
return null;
}