Я новичок в 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 слово описания или только фрагмент штрих-кода, чтобы показать, что во всех статьях есть этот фрагмент штрих-кода, но я получаю эту ошибку .