我使用自定义表让用户注册他们所做的事情的页面。我在理解wpdb以及如何使用它从html表单插入数据以及如何连接这些文件和函数方面遇到了问题。
发布我的数据时,我发现错误
wpdb->prepare缺少2个is行参数:
$redskabsID = $wpdb->get_row( $wpdb->prepare("SELECT redskabs_id FROM wp_redskaber WHERE redskabs_id = %d") );
和一个错误
mysql_real_escape_string() expects parameter 1 to be string
使用我的插入
$registrering = $wpdb->insert(
$wpdb->prefix . \'registreringer\',
array(
\'dato\' => new DateTime( \'now\' ),
\'fiske_vægt\' => apply_filters(\'pre_register_fiske_vægt\', $fiske_vægt ),
\'fiske_længde\' => apply_filters(\'pre_register_fiske_længde\', $fiske_længde ),
\'reg_user_id\' => $current_user->ID,
\'reg_redskabs_id\' => apply_filters(\'pre_register_reg_redskabs_id\', $redskabsID)
)
);
以下是相关信息:
表1
CREATE TABLE $table_registreringer
(
reg_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
dato TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
fiske_vægt INT NOT NULL,
fiske_længde INT NOT NULL,
reg_user_id BIGINT UNSIGNED NOT NULL,
reg_redskabs_id INT UNSIGNED NOT NULL,
PRIMARY KEY (reg_id),
FOREIGN KEY (reg_user_id) REFERENCES wp_users(id),
FOREIGN KEY (reg_redskabs_id) REFERENCES $table_redskaber(redskabs_id)
表2
$table_redskaber
(
redskabs_id INT UNSIGNED AUTO_INCREMENT NOT NULL,
redskabs_navn CHAR (20),
PRIMARY KEY (redskabs_id)
)
功能或形式背后的逻辑
<?php
if ( ! is_user_logged_in() ) {
return;
}
?>
<div class="wrapper">
<?php
global $wpdb;
if ( isset( $_POST[\'submit\'] ) ){
$current_user = wp_get_current_user();
$fiske_vægt = trim( $_POST[\'fiske_vægt\'] );
$fiske_længde = trim( $_POST[\'fiske_længde\'] );
$redskabsID = $wpdb->get_result ("SELECT redskabs_id FROM wp_redskaber");
$registrering = $wpdb->insert(
$wpdb->prefix . \'registreringer\',
array(
\'dato\' => new DateTime( \'now\' ),
\'fiske_vægt\' => apply_filters(\'pre_register_fiske_vægt\', $fiske_vægt ),
\'fiske_længde\' => apply_filters(\'pre_register_fiske_længde\', $fiske_længde ),
\'reg_user_id\' => $current_user->ID,
\'reg_redskabs_id\' => apply_filters(\'pre_register_reg_redskabs_id\', $redskabsID)
)
);
}
?>
和我的Html表单,用foreach将所有内容从wp\\u redskaber表中获取到我的表单中
<form method="post">
<h3>Registering af din fangst</h3>
<p><label>længden</label></p>
<p><input type="number" value="" name="fiske_længde" id="fiske_længde" />cm</p>
<p><label>vægten</label></p>
<p><input type="number" value="" name="fiske_vægt" id="fiske_vægt" />kg</p>
<p><label>Fangst udstyr</label></p>
<?php
$results = $wpdb->get_row( "SELECT redskabs_navn FROM `wp_redskaber`" );
echo "\\t<tr>\\n";
foreach ( $results as $redskaber )
{
echo "\\t\\t<td>$redskaber->redskabs_navn</td>\\n";
}
echo "<td>"
."<label>Spin <input type=\'radio\' name=\'picks[$redskaber]\' value=\'spin\'></label><br>"
."<label>Flue <input type=\'radio\' name=\'picks[$redskaber]\' value=\'flue\'></label><br>"
."<label>Orm <input type=\'radio\' name=\'picks[$redskaber]\' value=\'orm\'></label><br>"
."</td>";
echo "\\t</tr>\\n";
$wpdb->show_errors();
?>
<button type="submit" name="btnregister" class="button" >Submit</button>
<input type="hidden" name="submit" value="submit" />
</form>