我知道有一个非常古老的答案,详细说明了未识别的索引,但使用那里的方法,我无法找出如何使isset与我的代码一起工作。它在下面,但不能解决问题。
此外,我的错误与PREPARE错误是成对的,事实上,我的理解是,使用ISSET进行应答不再是防止SQL注入的安全方法。如果我错了,请有人纠正我。根据要求,我还包括了整个错误消息。
我在下面的代码中遇到了一些错误,不知道为什么它认为这没有准备好。有人能帮我解释一下吗?谢谢
对于每一行有一个$POST,它告诉我;注意:未定义索引;
if (!empty($_POST)) {
global $wpdb;
$table = "mytablenameplaceholder";
if(isset($_POST[\'name\']) && isset($_POST[\'emailaddress\'])){
$number1 = $_POST[\'name\'];
$message = $_POST[\'emailaddress\'];
$message = urlencode($message);
$data = array(
\'name\' => $_POST[\'name\'],
\'emailaddress\' => $_POST[\'emailaddress\'],
\'phonenumber\' => $_POST[\'phonenumber\']
);
$format = array(
\'%s\',
\'%s\'
);
$success=$wpdb->insert( $table, $data, $format );
if($success){
echo \'data has been saved\' ;
}
} else {
?>
<form action="" method="post" >
<input type="text" id="name" name="name" value="John">
<input type="text" name="email">
<input type="text" name="phonenumber">
<input type="submit">
</form>
<?php
}
我还收到了一封;注意:wpdb::prepare的调用不正确"E;请注意,尽管代码中当前没有prepare语句。我知道我需要添加它。
最合适的回答,由SO网友:xuan hung Nguyen 整理而成
我在您的代码中看到$\\u POST[\'phonenumber\']没有检查isset,因此这可能是您试图查找的错误。我想你可以试试这个
if (!empty($_POST)) {
global $wpdb;
$table = "mytablenameplaceholder";
if(isset($_POST[\'name\']) && isset($_POST[\'emailaddress\'])){
$number1 = $_POST[\'name\'];
$message = $_POST[\'emailaddress\'];
$message = urlencode($message);
//process phonenumber
$phonenumber= \'\';
if(isset($_POST[\'phonenumber\'])){
$phonenumber = $_POST[\'phonenumber\'];
}
//END - process phonenumber
$data = array(
\'name\' => $_POST[\'name\'],
\'emailaddress\' => $_POST[\'emailaddress\'],
\'phonenumber\' => $phonenumber
);
$format = array(
\'%s\',
\'%s\'
);
$success=$wpdb->insert( $table, $data, $format );
if($success){
echo \'data has been saved\' ;
}
} else {
?>
<form action="" method="post" >
<input type="text" id="name" name="name" value="John">
<input type="text" name="email">
<input type="text" name="phonenumber">
<input type="submit">
</form>
<?php
}