Tırnak ve paramterized SQL sorgusu ile sorun

1 Cevap php

Ben get_ bir dönemde alır, ve sonra bir SQL sorgusu içine bu birleştirir çok basit arama formunu var. Ben bir paramterized sorguda GET bu dizeyi kullanmaya çalışıyor, gibi pek ediyorum:

$searchString = '%' . $searchString . '%';
$recordsQuery = "SELECT username, firstname, lastname FROM $table WHERE lastname = $searchString" . $max;

  if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param("s", $searchString);
        $getRecords->execute();
        $getRecords->bind_result($username, $firstname, $lastname);
        $rows = array();

        while ($getRecords->fetch()) {
            $row = array(
                'username' => $username,
                'firstname' => $firstname,
                'lastname' => $lastname,
            );
             $rows[] = $row;
        }
        return $rows;
    }

Bununla birlikte, bu hata ile sonuçlanır

'Where yan tümcesi' in Bilinmeyen sütun 'terim'.

Ancak değişken kaçtı tırnak ekleyerek şey yaptım, benim terim alıntı değil becase bu olduğunu varsayalım.

Herhangi bir sözdizimi hataları veya böyle bu soruyu sormak için modifikasyon bir ürünü olan ve benim actaul kod yoktur.


Tamam, ben aşağıdaki satırları değiştirerek bu sabit:

 $searchstring = "'" . $searchstring . "'";
$recordsQuery = "SELECT username, firstname, lastname FROM $table WHERE lastname = $searchString" . $max;

Ben ... paramterized değil çünkü bu yaklaşım muhtemelen kötü olduğundan emin değilim, ama başka bir şekilde çalışma edemedi.

1 Cevap

You forgot some quotes : $searchString = '"%' . $searchString . '%"';

Ama neden böyle isteği yaratırım sen ilişkili parametreleri kullanabilirsiniz zaman: http://www.php.net/manual/fr/pdostatement.bindparam.php


$searchString = '%' . $searchString . '%';
$recordsQuery = "SELECT username, firstname, lastname FROM $table WHERE lastname = :lastname" . $max;
if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param(":lastname", "%".$searchString."%");
        $getRecords->execute();
        $getRecords->bind_result($username, $firstname, $lastname);
        $rows = array();
        while ($getRecords->fetch()) {
            $row = array(
                'username' => $username,
                'firstname' => $firstname,
                'lastname' => $lastname,
            );
             $rows[] = $row;
        }
        return $rows;
    }