解码前JSON字符串的一部分: ,"avail":["Wed-2","Wed-3"]
已解码: $data = json_decode($return, true);
存储在变量中: $avail = $data['avail'];
//数组声明
$days = array();
$cols = array();
格式高于 $avail:
if($avail != ""){
foreach($avail as $k=>$v)
{
echo $v;
$array = explode('-', $v);
$day =$array[0]; // Wed
$column = $array[1]; // 2
if($column == 1)
{
$col = "morning";
}
if($column == 2)
{
$col = "afternoon";
}
if($column == 3)
{
$col = "evening";
}
echo $col ."=>". $day;
array_push($cols,$col);
array_push($days,$day);
}
}
//现在使用数组($ days)匹配posts表中列'morning'的值 .
echo $sql=" SELECT * , (3956 * 2 * ASIN(SQRT( POWER(SIN(('$lat' - lat) * pi()/180 / 2), 2) +COS('$lat' * pi()/180) * COS(lat * pi()/180) * POWER(SIN(('$lon' - lon) * pi()/180 / 2), 2) ))) as distance
from posts,subjects WHERE posts.afternoon IN (" . implode(", ",$days) . ") AND posts.catID = '$catid' AND posts.subname LIKE '%$subject%' AND posts.subid = subjects.subid AND posts.catID = subjects.catid AND posts.pricing <= '$rate' having distance <= '$distance' order by distance ";
echo"
";
$stmt =connection::$pdo->prepare($sql);
$stmt->execute();
$place=array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$place[] = $row;
}
var_dump($place);
但是它返回了这个错误:
致命错误:未捕获异常'PDOException',消息'SQLSTATE [42S22]:未找到列:1054在第128行的C:\ wamp \ www \ fetch_tutor.php中'where子句'中的未知列'Wed'(!) PDOException:SQLSTATE [42S22]:找不到列:1054第128行的C:\ wamp \ www \ fetch_tutor.php中'where子句'中的未知列'Wed'
基于此,我理解提供的数组($ day)作为字段名称 . 实际上,这是数组中用于检查posts表中“morning”字段的值 .
我该怎么办呢 . 我浪费了将近一天的时间!
1 回答
它应该是
得到像
WHERE posts.afternoon IN ('Mon','Wed','Sun')
这样的东西 .