WordPress $wpdb를 사용하여 WordPress 데이터베이스의 테이블에 데이터 삽입
플러그인 개발을 시작하여 WordPress Codex 사이트의 튜토리얼을 따라가고 있습니다.나는 지금 막혔다 - 나는 "wp_imlisteningto"라는 이름의 데이터베이스를 가지고 있다.wp_
다음 명령을 사용하여 삽입되었습니다.
$table_name = $wpdb->prefix . "imlisteningto";
플러그인이 활성화되었을 때.
데이터베이스 자체에는 플러그인이 활성화될 때 설정되는 3개의 열이 있습니다.
$sql = "CREATE TABLE $table_name (
id mediumint(9) AUTO_INCREMENT,
album VARCHAR(50),
artist VARCHAR(50),
PRIMARY KEY (id)
);";
php 폼에서 (새로운 행을 생성하여) 이 데이터베이스에 데이터를 삽입하려고 합니다.
WordPress 관리자 내에서 매우 간단한 형식의 새 페이지를 만듭니다.
<form action="/wp-content/plugins/listeningto/formhtml.php" method="post">
Album: <input type="text" name="album" />
Artist: <input type="text" name="artist" />
<input type="submit">
</form>
콜을 보다시피formhtml.php
즉, 다음과 같습니다.
<?php
global $wpdb;
$wpdb->insert( $table_name, array( 'album' => $_POST['album'], 'artist' => $_POST['artist'] ), array( '$s', '$s' ) );
?>
제가 양식을 제출하면Error 500.0
Worpdress에서 플러그인을 실행하는 경우IIS7.0
, 및 a"Page Not Found"
실행 중인 다른 웹 서버에서 실행 중인 경우apache
.
내가 바뀌면formhtml.php
대상:
<?php
echo $_POST['album'];
echo $_POST['artist'];
?>
정상 작동 - 폼에 넣은 앨범과 아티스트를 얻을 수 있습니다.(새 행에) 데이터를 데이터베이스에 삽입할 때 잘못된 작업을 하고 있는 것이 분명합니다.
그게 뭐일 것 같아?
갱신하다
좋아, 그럼 내가 업데이트하면formhtml.php
다음과 같이 입력합니다.
<?php
require_once('../../../wp-config.php');
$table_name = $wpdb->prefix . "imlisteningto";
$wpdb->insert( $table_name, array( 'album' => $_POST['album'], 'artist' => $_POST['artist'] ), array( '$s', '$s' ) );
?>
에러 메세지는 표시되지 않게 되었지만, 데이터는 아직 데이타베이스에 입력되지 않습니다.
업데이트 2
이 방법은 효과가 있었습니다.
<?php
require_once('../../../wp-config.php');
global $wpdb;
$table_name = $wpdb->prefix . "imlisteningto";
$wpdb->insert( $table_name, array( 'album' => $_POST['album'], 'artist' => $_POST['artist'] ) );
?>
다음과 같이 합니다.
<?php
require_once('../../../wp-load.php');
global $wpdb;
$table_name = $wpdb->prefix . "imlisteningto";
$wpdb->insert( $table_name, array( 'album' => $_POST['album'], 'artist' => $_POST['artist'] ) );
?>
그래서 왠지$wpdb
필요 없는 한 동작하지 않았습니다.wp-config
또는wp-load.php
. 를 포함하는 경우wp-load.php
,$wpdb
모든 것이 잘 되고 있습니다.
포함하여
require_once('../../../wp-config.php');
나를 위해 일했다
이거 드셔보세요.
<?php
global $wpdb;
$wpdb->insert( $table_name, array( 'album' => "$_POST['album']", 'artist' => "$_POST['artist']" ) );
?>
예:
<?php
global $wpdb;
$wpdb->insert($table_name , array('chart_name' => "Line Chart" ,'chart_type' => "trends",'status' => 0));
?>
지금쯤은 알아냈겠지만 아무도 여기서 해결하지 않았어요샘플 코드의 세 번째 매개 변수(2번째 배열)에 '$s'가 있지만 값 포맷용이므로 '%s'가 되어야 합니다.WP Codex에는 $wpdb->insert()의 이 형식 파라미터는 옵션이라고 기재되어 있습니다.
DB 테이블에 따라 어레이를 만듭니다.그런 다음 WP insert를 사용합니다.
global $wpdb;
$order = [
'product_id' =>'1',
'discount' => '1',
'total' => '1',
'status' => '1',
'payment_method' => '1',
'payment_reference' => '1',
'sold_by' => '1'
];
$wpdb->insert('DB_TABLE_NAME', $order );
$global $wpdb;
$table_name1 = $wpdb->prefix.'php_crud';
$data_insert= array(
'uname1' => $uname1,
'uemail1' => $uemail1,
'upass1' => $upass1,
'language1' => $language1,
'gender1' => $gender1,
'ustate1' => $ustate1,
'file1' => $finalimg
);
$form_insert1=$wpdb->insert($table_name1,$data_insert);
if($form_insert1)
{
echo "<div class='container' style{ color:red;} >Form
Submitted Successfully<div>";
}
else
{
echo "ERROR";
}
당신의 sql 문자열에 오류가 2개 있는 것 같습니다.
그게 더 좋을 것 같아요.$table_name
변수를 연결해야 합니다.
$sql = "CREATE TABLE" . $table_name . "(
id mediumint(9) AUTO_INCREMENT,
album VARCHAR(50),
artist VARCHAR(50),
PRIMARY KEY (id)
)";
제거하다;
마지막 줄에
언급URL : https://stackoverflow.com/questions/11205932/inserting-data-into-a-table-in-wordpress-database-using-wordpress-wpdb
'programing' 카테고리의 다른 글
Springboot @retryable 재시도 안 함 (0) | 2023.03.23 |
---|---|
클라이언트 측에서 javascript를 작성하여 'chunked' 응답을 제때 수신하고 해석하는 방법은 무엇입니까? (0) | 2023.03.23 |
Wordpress: get_post_field() 함수를 사용하여 게시 내용을 가져올 때 쇼트코드가 작동하지 않습니다. (0) | 2023.03.23 |
ORA-01034: ORACLE을 사용할 수 없음 ORA-27101: 공유 메모리 영역이 없습니다. (0) | 2023.03.23 |
Next.js 페이지 전환 시 화면 로드 중 (0) | 2023.03.23 |