programing

WordPress $wpdb를 사용하여 WordPress 데이터베이스의 테이블에 데이터 삽입

instargram 2023. 3. 23. 22:15
반응형

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.0Worpdress에서 플러그인을 실행하는 경우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

반응형