数组内部-尽管没有使用WordPress调用准备好的语句,但却出现了“未识别的索引”错误,错误为“Prepare is unright”

时间:2020-09-23 作者:Manny

我知道有一个非常古老的答案,详细说明了未识别的索引,但使用那里的方法,我无法找出如何使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语句。我知道我需要添加它。

enter image description here

1 个回复
最合适的回答,由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
    }

相关推荐

如何从数组中获取特定的字符串/值?PHP

我正在创建一个自定义的wordpress主题,我几乎陷入了一种情况。我创建了一个数组$ark并在其中获取了一些值<?php $ark[] = esc_url( add_query_arg( \'pdff\', $post->ID ) ); print_r($ark) ; echo \'jonty\'; ?> 下面是上述代码的输出;Array ( [0] => /jobifylocal/wp-admin/admin-ajax.php?pdff=127 ) jonty&#