Php 7 pdo mysql регулярное выражение переменной в запросе - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в PHP и mySQL, я пытаюсь поиграть с этим кодом, чтобы выучить эти языки.

У меня есть этот код:

<?php

class Cerca extends dbh{

  public function cercaArt(){
    $dbh = new dbh;
    $dbh->connect();

    if(isset($_POST['barcode']) || isset($_POST['codice']) || isset($_POST['descrizione'])){
      $barcode = $_POST['barcode'];
      $codice = $_POST['codice'];
      $descrizione = $_POST['descrizione'];

      $sql = "SELECT * FROM articoli WHERE barcode = ? REGEXP \"^[$barcode]\"  OR codice = ? REGEXP \"^[$codice]\"  OR descrizione = ? REGEXP \"^[$descrizione]\" ";
      $stmt = $this->connect()->prepare($sql);
      $stmt->execute([$barcode, $codice, $descrizione]);

      if($stmt->rowCount()>0){
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){

          echo "<tr>
                <td>". $row['codice'] ."</td>
                <td>". $row['descrizione'] ."</td>
                <td>". $row['prezzoA'] ."</td>
                <td>". $row['prezzoV'] ."</td>
                <td>". $row['quantita'] ."</td>
                <td>". $row['barcode'] ."</td>
                <td>". $row['esaurimento'] ."</td>
                <td>". $row['categoria'] ."</td>
                </tr>
                ";
          }
        }
    } else{
      echo 'Immissione non valida!';
      }
  }
}
?>

и это код формы для этого скрипта:

    <?php
include 'includes/header.php';
session_start();
include 'includes/sidebar.php';
include 'includes/dbh.php';
include 'includes/cerca-articolo.php';
 ?>

   <!-- Header -->
<header class="w3-container" style="padding-top:22px">
  <h4><b><i class="fa fa-dashboard"></i> Anagrafica articoli</b></h4>
</header>

 <!-- CONTENT! -->

 <!-- FIRST ROW -->
  <div class="w3-row-padding w3-margin-bottom">
    <div class="w3-container w3-third">
      <form class="w3-container" action="anagrafica-articoli.php" method="post">
        <label class="w3-text-blue"><b>Barcode:</b></label>
        <input class="w3-input w3-border" name="barcode" type="text">
        <br>
        <label class="w3-text-blue"><b>Codice articolo:</b></label>
        <input class="w3-input w3-border" name="codice" type="text">
        <br>
        <label class="w3-text-blue"><b>Descrizione:</b></label>
        <input class="w3-input w3-border" name="descrizione" type="text">
        <br>
        <button class="w3-btn w3-blue" type="submit" value="submit">Cerca</button>
      </form>
    </div>
  </div>


<div class="w3-container">
  <table class="w3-table w3-striped">
    <tr>
      <th>Codice</th>
      <th>Descrizione</th>
      <th>Prezzo Acquisto</th>
      <th>Prezzo Vendita</th>
      <th>Quantità</th>
      <th>Barcode</th>
      <th>Esaurimento</th>
      <th>Categoria</th>
    </tr>
    <?php
      $search = new Cerca;
      $search->cercaArt();
     ?>
  </table>
</div>


 <?php
   include 'includes/footer.php';
  ?>

Когда я запускаю его, я получаю эту ошибку:

Неустранимая ошибка: необработанное исключение PDO: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1139 Произошла ошибка «отсутствует завершение] для персонажа класс по смещению 3 'от регулярного выражения в C: \ xampp \ htdocs \ bk \ includes \ cerca-articolo.php: 16 Трассировка стека: # 0 C: \ XAMPP \ HTDOCS \ Ьк \ включает в себя \ Cerca-articolo.php (16): PDOStatement-> execute (Array) # 1 C: \ xampp \ htdocs \ bk \ anagrafica-articoli.php (49): Cerca-> cercaArt () # 2 {main} брошенный в C: \ xampp \ htdocs \ bk \ включает \ cerca-articolo.php в строка 16

Этот запрос для поля поиска. Это работает без регулярного выражения, но не показывает мне данные, если описание или штрих-код, который я ищу, не полны.

Если описание «NIKE AIR SHOWS YELLOW» и я ищу «NIKE», поле данных в таблице не отображается. Для данных я должен искать "NIKE AIR SHOWS YELLOW" в точности строку.

Поэтому я хочу попытаться добавить регулярное выражение для получения данных, если, например, я ищу только 1 слово описания или только фрагмент штрих-кода, чтобы показать, что во всех статьях есть этот фрагмент штрих-кода, но я получаю эту ошибку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...