簡體   English   中英

使用需要放入數組的字段搜索查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM