Aynı arama alanına ad, telefon numarası, müşteri, e-posta vb. Kullanarak arama yapmak istiyorum. Ama bazı sütunlar INT ve bazıları VARCHAR ve bir sözdizimi hatası alıyorum ve neden emin değilim. Sorunu çözmek için CAST kullanmayı denedim, ancak yine de hata alıyorum.Karışık datatypes ile LIKE sql operatörünü kullanarak php değişkenini karşılaştırma
PHP
$search = $_POST['search'];
var_dump($search);
try {
$sql = "SELECT * FROM customers WHERE CAST(custid as VARCHAR) LIKE '%$search%' OR firstname LIKE '%$search%' OR lastname LIKE '%$search%' OR CAST(primaryphone as VARCHAR) LIKE '%'$search%'' OR CAST(secondaryphone as VARCHAR) LIKE '%$search%' OR email LIKE '%$search%'";
$statement = $this->con->prepare($sql);
$statement->execute();
} catch(PDOException $Exception) {
echo "Error: " . $Exception;
die();
}
Hata
'1 çizgisinde 'yakın kullanma hakkı sözdizimi için MySQL sunucu sürümü' VARCHAR) LIKE '% George%' VEYA ad LIKE '% George%' VEYA soyad LIKE' % George% karşılık manuel kontrolsözdizimi hatası veya erişim ihlali: 1064 Eğer SQL sözdizimi bir hata var;
TABLO
CREATE TABLE customers (
custid int(6),
firstname varchar(20),
lastname varchar(20),
primaryphone int(20),
secondaryphone int(20),
email varchar(40),
);
İlk önce "||" yerine VEYA kullanmanız gerektiğini düşünüyorum –
Bunları OR olarak değiştirdim ancak yine de aynı hata mesajını alıyorum. Başka önerileriniz var mı? – David
Emin değilim ama belki alan uzunluğunu sağlamanız gerekiyor. CAST (VARCHAR (12)) –