Şu anda sadece iki öğeyle küçük bir arama formum var: search
adında bir metin girişi ve param
adında bir "seçim" kutusu. Bu kutuda seçilen seçenek, DB'mdeki hangi tablo sütununun alınacağını seçmek için bir parametre olarak kullanılmalıdır. mysql_
fonksiyonlarını kullanmaBir mysqli kullanarak bir WHERE yan tümcesine nasıl bir değişken geçirebilirim?
, böyle bir şey yapılabilir:
$param = $_POST['param' ];
$search = $_POST['search'];
$query = 'SELECT * FROM table WHERE $param LIKE "%$search%"';
Ama mysqli_
sözdizimi ile çalışmak için alınamıyor. Ben hazır deyimleri kullanmaya çalışıyorum, ancak şimdiye kadar yaptığım en iyi şudur:
$param = $_POST['param' ];
$search = $_POST['search'];
if($param == 'first_name')
{
if($prep = $link->prepare('SELECT * FROM table
WHERE first_name
LIKE CONCAT("%", ?, "%")'))
{
$prep->bind_param('s', $search);
$prep->execute();
$prep->bind_result($first_name, $last_name);
while($prep->fetch())
echo $first_name . ' ' . $last_name;
$prep->close();
}
else
echo 'Error while preparing statement.';
}
else if($param == 'last_name')
{
...
}
Ama sadece else if
s bir demet kullanarak ben sütun sürü zorunda, eğer özel bir yeri tekrarlayan ve verimsiz görünmektedir sap.
Denediğim ilk şey, parametre bağlama - ... WHERE ? LIKE ...
ve $prep->bind_param('ss', $param, $search)
- oldu, ancak işe yaramadı (ve hala nedenini bilmiyorum).
Bunu daha zekice yapmanın bir yolu var mı?
+1 sorularınızı biçimlendirme güzel! –
.... WHERE ". $ Param." LIKE ....genel olarak sql deyimleriyle ne yapıyorum – Adsy2010
Sütun adları için yer tutucuları, bildiğim kadarıyla kullanamazsınız, bu yüzden işe yaramadı. –