【问题标题】:Insert data into WPDB custom table将数据插入 WPDB 自定义表
【发布时间】:2020-09-03 21:54:08
【问题描述】:

WPDB 插入错误

我需要帮助。我是 wordpress/php 编码的新手。我在主题文件夹中存储的 php 模板文件中编写了一个 wpdb 插入。 代码的目的是将表单数据插入到自定义表中......见下文。 编写代码:

if (isset($_POST["submit"])) {
    //    global $wpdb;
    $cit1 = $_POST['cit1'];
    $cit2 = $_POST['cit2'];
    $cit3 = $_POST['cit3'];
    $cit_text = $_POST['cit_text'];

    $success = $wpdb -> insert(
        wp_citations,
            array(
                'cit_id' => null,
                'cit1' => $cit1,
                'cit2' => $cit2,
                'cit3' => $cit3,
                'cit_text' => $cit_text,
                'timestamp' => null
                ),
            array(
                '%s',
                '%s',
                '%s',
                '%s'
                )
    );
}

但是,我使用了参考法典中的打印错误 <?php $wpdb->print_error(); ?> 函数,并将其作为错误返回:

"SELECT * FROM wp_posts WHERE (post_type = 'page' AND post_status = 'publish') ORDER BY menu_order,wp_posts.post_title ASC"

我正在编写的脚本不包含任何 wp 生成的表,仅包含我创建的自定义表。 我只能假设这是一个钩子或 wp 编码连接。

有人见过这个吗?如何绕过 wp 内部编码来使用新 php 文件中显式调用的内容?

不确定要尝试什么。

【问题讨论】:

    标签: php html mysql wordpress insert


    【解决方案1】:

    试试下面的代码 -

        if (isset($_POST["submit"])) {
            global $wpdb;
            $cit1 = $_POST['cit1'];
            $cit2 = $_POST['cit2'];
            $cit3 = $_POST['cit3'];
            $cit_text = $_POST['cit_text'];
            $insert_array = array(
                                    'cit_id' => NULL,
                                    'cit1' => $cit1,
                                    'cit2' => $cit2,
                                    'cit3' => $cit3,
                                    'cit_text' => $cit_text,
                                    'timestamp' => NULL
                            );
            $success = $wpdb->insert(wp_citations,$insert_array);
                }
    

    此外,理想情况下,'timestamp' 不应为 NULL。它应该是默认列中 MySql 数据库结构中的 current_timestamp。

    【讨论】:

    • 感谢您的帮助。我做了你推荐的更新。更新的代码确实清除了错误。但是,表单仍然没有将数据传递给 wpdb。查看整个代码。这一切都在一个自定义主题页面模板中。
    【解决方案2】:

    感谢您的帮助。我做了你推荐的更新。更新的代码确实清除了错误。但是,表单仍然没有将数据传递给 wpdb。查看整个代码。这一切都在一个自定义主题页面模板中。关于如何获得结果的任何想法。也许PHP的不同位置,创建一个函数。任何输入都会有所帮助。

    <?php /* Template Name: Driver Monitor Page */
    
    get_header(); ?>
    
    
    
    
    <?php
    
    global $wpdb;
    $result = $wpdb->get_results ("SELECT * FROM wp_ccr_info WHERE hoa_id = 4", ARRAY_A);
    
    
    echo '<form method="get">';
    echo '<label>Choose an Item to Citation: </label>';
    echo '<select id="cit1" required>';
    echo '<option value="">Select a CCR Option</option>';
    foreach($result as $row){
     echo '<option value="'.$row[ccr_item].'">'.$row[ccr_item].'</option>';   
    }
    
    echo "</select>";
      echo '<br><br>';
    
    
    echo '<label>Choose an Item to Citation 2: </label>';
    echo '<select id="cit2">';
    echo '<option value="">Select a CCR Option</option>';
    foreach($result as $row){
     echo '<option value="'.$row[ccr_item].'">'.$row[ccr_item].'</option>';   
    }
    
    
    echo '</select>';
      echo '<br><br>';
    
    
    echo '<label>Choose an Item to Citation 3: </label>';
    echo '<select id="cit3">';
    echo '<option value="">Select a CCR Option</option>';
    foreach($result as $row){
     echo '<option value="'.$row[ccr_item].'">'.$row[ccr_item].'</option>';   
    }
    
    echo "</select>";
      echo '<br><br><br><br><br><br>';
    
    
    
    echo '<textarea id="cit_text" maxlength="255" placeholder= "Explain any citation.">';
    
    echo '</textarea>';
    
    //add 2 more drop down menus
    //add and text area
    //add photos
    
      echo '<br><br><input type="submit" value="Submit">';
    
    
    echo "</form>";
    ?>
    
    <?php
        if (isset($_POST["submit"])) {
            global $wpdb;
            $cit1 = $_POST['cit1'];
            $cit2 = $_POST['cit2'];
            $cit3 = $_POST['cit3'];
            $cit_text = $_POST['cit_text'];
            $insert_array = array(
                                    'cit1' => $cit1,
                                    'cit2' => $cit2,
                                    'cit3' => $cit3,
                                    'cit_text' => $cit_text                        );
            $success = $wpdb->insert(wp_citations,$insert_array);
                }
    
    
    ?>
    
    
    
    
    
    
    
    <?php get_footer(); ?>
    

    【讨论】:

      【解决方案3】:

      请尝试以下代码,并始终尝试按照相同的方式轻松跟踪错误。希望这可以帮助你 -

      <?php 
      /* Template Name: Driver Monitor Page */
      get_header(); 
      ?>
      <?php
      global $wpdb;
      $result = $wpdb->get_results ("SELECT * FROM wp_ccr_info WHERE hoa_id = 4", ARRAY_A);
      ?>
      <form method="GET" action="">
      <label>Choose an Item to Citation: </label>
      <select id="cit1" required>
      <option value="">Select a CCR Option</option>
      <?php
      foreach($result as $row){
      ?>
       <option value="<?php echo $row[ccr_item]; ?>"><?php echo $row[ccr_item]; ?></option>
      <?php 
      }
      ?>
      </select>
      <br><br>
      <label>Choose an Item to Citation 2: </label>
      <select id="cit2">
      <option value="">Select a CCR Option</option>
      <?php
      foreach($result as $row
      ?>
       <option value="<?php echo $row[ccr_item]; ?>"><?php echo $row[ccr_item]; ?></option>
      <?php 
      }
      ?>
      </select>
      <br><br>
      <label>Choose an Item to Citation 3: </label>
      <select id="cit3">
      <option value="">Select a CCR Option</option>
      <?php
      foreach($result as $row
      ?>
       <option value="<?php echo $row[ccr_item]; ?>"><?php echo $row[ccr_item]; ?></option>
      <?php 
      }
      ?>
      </select>
      <br><br><br><br><br><br> <!-- why so many br tags ?-->
      
      <textarea id="cit_text" maxlength="255" placeholder= "Explain any citation.">
      </textarea>
      
      <!-- add 2 more drop down menus
      //add and text area
      //add photos
      -->
        <br><br><input type="submit" value="Submit">
      </form>
      <?php
          if (isset($_POST["submit"])) {
              global $wpdb;
              $cit1 = $_POST['cit1'];
              $cit2 = $_POST['cit2'];
              $cit3 = $_POST['cit3'];
              $cit_text = $_POST['cit_text'];
              $insert_array = array(
                                      'cit1' => $cit1,
                                      'cit2' => $cit2,
                                      'cit3' => $cit3,
                                      'cit_text' => $cit_text
                                      );
              $success = $wpdb->insert(wp_citations,$insert_array);
                  }
      ?>
      <?php get_footer(); ?>
      

      始终避免不必要的空格以避免标头已发送错误。编码愉快!

      【讨论】:

        猜你喜欢
        • 2013-03-05
        • 1970-01-01
        • 2021-06-21
        • 1970-01-01
        • 2020-01-12
        • 2016-03-03
        • 2018-02-04
        • 2014-12-22
        • 2015-06-25
        相关资源
        最近更新 更多