PHP 和 MySQL 中的多输入字段搜索不起作用

乌斯科克

我必须在一次搜索中输入多个输入(成对):例如:

1 Vorname and Strasse
2 Nachname and Strasse
3 Vorname and Email
4 Nachname and Email
5 Only Vorname
6 Only nickname
7 Only email
8 Vorname, Nachname, and Strasse
9 Vorname, Nachname, and Email
10 like that all separately and together

我在下面的代码中做了这个,它不适用于上述条件。有人在这里帮助我使用 PHP/MySQL。真的很感激

代码:

if(isset($_POST['submit']) ){

    if(isset($_POST['text1'], $_POST['text7'])){
        // we got both vorname and ort 

        $statement= $myconnection->prepare(
                "SELECT * FROM OL_trans WHERE vorname = ? AND ort = ? OR nachname = ? OR strasse = ? OR email = ?");

        $statement->execute( [$_POST['text1'], $_POST['text7'], $_POST['text2'],$_POST['text8'], $_POST['text3']] ); 

    }
    else{
        if(isset($_POST['text1'])){
            // vorname
            $statement= $myconnection->prepare(
                "SELECT * FROM OL_trans WHERE vorname = ?");

            $statement->execute( [$_POST['text1']] ); 
        }
        if ( isset($_POST['text7'] )) {
            // ort 
            $statement= $myconnection->prepare(
                "SELECT * FROM OL_trans WHERE ort = ?");

            $statement->execute( [$_POST['text7']] ); 
        }
    }
    // generate the output
    $rows = $statement->fetchAll(); 

    foreach($rows as $row){ 
            echo '<br/>'.$row['vorname'].
           ' - '.$row['nachname'].

           ' - '.$row['strasse'].
           ' - '.$row['plz'].
           ' - '.$row['ort'].
           ' - '.$row['email'].
           ' - '.$row['telefon'].
           ' - '.$row['mobil'].'<br/><br/>';
           }    
}

HTML代码:

<form method="post" action="sample.php">
    <br><br>
<br><br>
    <!--Beginn des Anrede-->
<div class="form1"><br><br>
<div class="names">
    <div class="anrede"> 
    <label for="Anrede">Anrede
        <select id="select" name="anrede" >
        <option value="">--Please choose an option--</option>
        <option value="herr">Herr</option>
        <option value="frau">Frau</option>
        <option value="andere">Andere</option>
        </select>
    </label></div>
    <br><br>
  <div><br>
    <label class="desc" id="title1" for="text1">Vorname</label>
    <div>
      <input id="text1" name="text1" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="vorname">
    </div>
  </div>
    <div><br><br>
    <label class="desc" id="title1" for="text2">Nachname</label>
    <div>
      <input id="text2" name="text2" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Ihr Nachname">
    </div>
  </div>
    <div><br>
    <label class="desc" id="title1" for="text3">E-mail-Addresse</label>
    <div>
      <input id="text3" name="text3" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Email">
    </div>
  </div>
    <div><br>
    <label class="desc" id="title1" for="text4">Telefonnummer</label>
    <div>
      <input id="text4" name="text4" type="number" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Telefonnummer">
    </div>
  </div>
  <div><br><br>
    <label class="desc" id="title3" for="text5">
      Geburtstag
    </label>
    <div>
      <input id="text5" name="text5" type="date" spellcheck="false" value="" maxlength="255" tabindex="3"> 
   </div>
  </div>
 <div><br><br>
    <label class="desc" id="title3" for="text6">
      Plz
    </label>
    <div>
      <input id="text6" name="text6" type="number" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Ihre Postleitzahl"> 
   </div><br><br>
   <label class="desc" id="title3" for="text7">
      Ort
    </label>
    <div>
      <input id="text7" name="text7" type="text" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Dein Platz"> 
   </div><br><br>
  </div>

 <div>
    <label class="desc" id="title1" for="text8">Stra&szlig;e</label>
    <div>
      <input id="text8" name="text8" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Stra&szlig;e">
    </div>
  </div>

 <div><br><br>
    <label class="desc" id="title3" for="text9">
      Hausnummer
    </label>

      <input id="text9" name="text9" type="number" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Ihre Hausnummer">

      <label class="desc" id="title3" for="text9">
      Hausnummerzusatz
    </label>
      <input id="text10" name="text10" type="number" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Zus&#228;tzliche Adresse">
      <div><br><br>
      <div class="sub">
      <input type="submit" name="submit" value="Suche">
      <input type="reset" name="reset" value="Reset">
      </div>
    <br><br><br></div>
    </div>
  </div>
</form>

对搜索都不起作用。我尝试在“AND”和“OR”之间进行更改,但它对我不起作用。

里格斯愚蠢

首先,为表单字段指定合理的名称,以便在字段到达 PHP 时知道您正在处理什么。例如至少我们在脚本中处理的那些:

是文本 1:

<input id="vorname" name="vorname" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="vorname">

是 text7

<input id="ort" name="ort" type="text" spellcheck="false" value="" maxlength="255" tabindex="3" placeholder="Dein Platz"> 

是 text2

<input id="nachname" name="nachname" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Ihr Nachname">

是 text8

<input id="strasse" name="strasse" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Stra&szlig;e">

是 text3

<input id="email" name="email" type="text" class="field text fn" value="" size="8" tabindex="1" placeholder="Deine Email">

PHP

// while developing and debugging add these
// just in case you are developing on a PHP configured for a LIVE env
ini_set('display_errors', 1); 
ini_set('log_errors',1); 
error_reporting(E_ALL);

// this should really go in the db connect section
// will cause PDO to throw exceptions if errors happen in the PDO Code
// so you can actually see what the problems are

$myconnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if(isset($_POST['submit']) ){

    $sql = 'SELECT * FROM OL_trans WHERE ';

    if ( !empty($_POST['vorname']) ) {
        $sql .= ' vorname = ? AND ';
        $params[] =  $_POST['vorname'];
    }   

    if ( !empty($_POST['nachname']) ) {
        $sql .= ' nachname = ? AND ';
        $params[] =  $_POST['nachname'];
    }

    if ( !empty($_POST['email']) ) {
        $sql .= ' email = ? AND ';
        $params[] =  $_POST['email'];
    }

    if ( !empty($_POST['strasse']) ) {
        $sql .= ' strasse = ? AND ';
        $params[] =  $_POST['strasse'];
    }

    if ( !empty($_POST['ort']) ) {
        $sql .= ' ort= ? AND ';
        $params[] =  $_POST['ort'];
    }

    // remove trailing AND

    $sql = rtrim($sql, 'AND ');
    $stmt = $myconnection->prepare($sql);
    $stmt->execute($params);

    $rows = $stmt->fetchAll();

    foreach($rows as $row){ 
        echo '<br/>'.$row['vorname'].
       ' - '.$row['nachname'].

       ' - '.$row['strasse'].
       ' - '.$row['plz'].
       ' - '.$row['ort'].
       ' - '.$row['email'].
       ' - '.$row['telefon'].
       ' - '.$row['mobil'].'<br/><br/>';
    } 
}

编辑:RE 问题

当我进入时,我有一个小测试台在运行

$_POST = [  'submit' => 1, 
        'vorname' => 'Thomas', 
        'nachname' => 'Denly',
        'email' => '[email protected]'
    ];

生成的查询是

SELECT * FROM OL_trans WHERE  vorname = ? AND  nachname = ? AND  email = ?

$params数组是

Array
(
    [0] => Thomas
    [1] => Denly
    [2] => [email protected]
)

如果我输入

$_POST = [  'submit' => 1, 
        'vorname' => 'Thomas', 
        ];

查询是

SELECT * FROM OL_trans WHERE  vorname = ?

和参数是

Array
(
    [0] => Thomas
)

那么该查询和参数值有什么问题呢?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

HTML表单插入在PHP和MySQL中不起作用

来自分类Dev

MySQL和Fputcsv PHP字段分隔符不起作用

来自分类Dev

PHP 中的搜索和过滤功能不起作用

来自分类Dev

PHP MySQL搜索不起作用

来自分类Dev

PHP变量和MySQL LIKE查询不起作用

来自分类Dev

使用PHP和MYSQL的PDO插入操作不起作用

来自分类Dev

使用Phonegap,AJAX,PHP和MySQL登录不起作用

来自分类Dev

PHP和MySQL登录/注册系统不起作用

来自分类Dev

PHP 和 MySQL 电子邮件验证不起作用

来自分类Dev

PHP 和 MySQL - 防止重复行插入不起作用

来自分类Dev

PHP和MySQL实时搜索

来自分类Dev

协助PHP和MySQL中的搜索功能

来自分类Dev

PHP 和 MySQL 中的基本搜索

来自分类Dev

匹配用户名和密码与mysql和php不起作用

来自分类Dev

PHP和MySQL中的数学

来自分类Dev

php 和 Mysql 中的警报?

来自分类Dev

PHP和MySQL INSERT INTO不起作用-DB中没有错误并且没有新行

来自分类Dev

按价格排序,名称脚本不起作用... PHP和MySQL

来自分类Dev

JQuery、PHP 和 mySQL 帮助。我不明白为什么这不起作用

来自分类Dev

MySQL和PHP搜索相似的单词

来自分类Dev

PHP和MySQL搜索栏的价值

来自分类Dev

使用php和mysql搜索查询

来自分类Dev

使用Ajax和PHP访问mySQL字段

来自分类Dev

PHP和MySQL插入输入数组

来自分类Dev

min函数在mysql和wordpress插件中不起作用

来自分类Dev

内部连接和删除在mysql中不起作用

来自分类Dev

IF 和 ELSE IF 语句在 MYSQL 查询中不起作用

来自分类Dev

PHP和mysql中的反斜杠

来自分类Dev

在PHP和MySQL中设置时区