[英]searching a query with fields that need putting into array
不知道我是否嘗試正確,但是我有一個MySQL數據庫,該數據庫存儲緯度,經度和車輛以及其他字段。 我遇到的問題是我將車輛存儲在數據庫中,例如“ 1:4:7:8:9”,等等。1是Car,但這並不重要。 我使用的代碼可以根據經度和緯度來獲取結果,但是如果車輛類型也匹配,我需要它來獲取結果,因此我需要向查詢中添加一些內容,以查看該字段中是否包含1或任何內容與“ 1:4:7:8:9”聯系
該代碼是
include 'db.php';
$origlat = "53.83428999999999";
$origlon = "-3.0399797000000035";
$vehicle_req = "1";
$result = mysqli_query($con,"SELECT *, ( 3959 * acos( cos( radians(53.83428999999999) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-3.0399797000000035) ) + sin( radians(53.83428999999999) ) * sin( radians( latitude ) ) ) ) AS distance FROM clients HAVING distance < 30 ORDER BY distance LIMIT 0 , 20;");
while($row = mysqli_fetch_array($result)) {
$id = $row['id'];
echo "found";
echo $id;
謝謝,我希望這很清楚? 謝謝,扎克
如果要在id
列中搜索1和4:
/* MySQL Query Should be:
SELECT *, (...) AS distance FROM clients
HAVING distance < 30
AND INSTR( concat('-:',id,':') , ':1:') > 0
AND INSTR( concat('-:',id,':') , ':4:') > 0
ORDER BY distance LIMIT 0 , 20;
*/
要創建此MySQL查詢,我們需要for
$vehicle_reqs
每個數字for
循環
$vehicle_reqs= array(1,4);
// fix part of MySQL Query
$sqlQuery = "SELECT *, ( 3959 * acos( cos( radians(53.83428999999999) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-3.0399797000000035) ) + sin( radians(53.83428999999999) ) * sin( radians( latitude ) ) ) ) AS distance FROM clients HAVING distance < 30 "
// conditions for all items in $vehicle_reqs array:
for( $i=0; $i<sizeof($vehicle_reqs); $i++){
$sqlQuery = $sqlQuery . " AND INSTR( concat('-:',id,':') , ':".$vehicle_reqs[i].":') > 0 " ;
}
// another fix part of MySQL Query
$sqlQuery = $sqlQuery ." ORDER BY distance LIMIT 0 , 20;" ;
echo $sqlQuery ;
INSTR( concat('-:',id,':') , ':4:') > 0
工作?
1-添加:
在內存中id
列的開始和結束。
2-查找等於':4:'的第一個子字符串
3-如果INSTR()
找不到任何東西,則重新調整0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.