Первый ученик. Я просто пытаюсь сделать цикл в $ _POST заявления PHP как этот
if ($_POST) { //Get value of Latitude, Longitude, Radius from site.php to calculate in Query above
include('config/dbconnect.php'); //Database connection
$lat = array();
$lon = array();
$rad = array();
$stmt = array();
$sql = array();
$lat1 = $_POST['lat1']; //Get value of Latitude 1
$lon1 = $_POST['lon1']; //Get value of Longitude 1
$rad1 = $_POST['rad1']; //Get value of Radius 1
$endrow = $_POST['endrow'];
for ($i = 2; $i <= $endrow; $i++) {
$lat[$i] = $_POST['lat'.$i]; //Get value of Latitude n
$lon[$i] = $_POST['lon'.$i]; //Get value of Longitude n
$rad[$i] = $_POST['rad'.$i]; //Get value of Radius n
}
//Haversine Formula and view only match Site CI and d2g_trx CI
$sql = "SELECT site.*,d2g_trx.*,
(6371 * acos(cos(radians($lat1))
* cos(radians(site.latitude))
* cos(radians(site.longitude) - radians($lon1))
+ sin(radians($lat1))
* sin(radians(site.latitude)))) AS distance
FROM site
INNER JOIN d2g_trx ON site.ci = d2g_trx.CI
HAVING distance <=$rad1
ORDER BY distance
LIMIT 0 , 50";
$stmt = $dbh->query($sql)->fetchAll(); // Input 1
for ($j = 2; $j <= $endrow; $j++) {
//Haversine Formula and view only match Site CI and d2g_trx CI
$sql[$j] = "SELECT site.*,d2g_trx.*,
(6371 * acos(cos(radians($lat[$j]))
* cos(radians(site.latitude))
* cos(radians(site.longitude) - radians($lon[$j]))
+ sin(radians($lat[$j]))
* sin(radians(site.latitude)))) AS distance
FROM site
INNER JOIN d2g_trx ON site.ci = d2g_trx.CI
HAVING distance <=$rad[$j]
ORDER BY distance
LIMIT 0 , 50";
$stmt[$j] = $dbh->query($sql[$j])->fetchAll(); //Input n
}
}
я получил ошибку как этот
Fatal error: Call to a member function fetchAll() on a non-object in F:\XAMPP\htdocs\kp\getsite.php on line 28
Во всяком случае, линия 28 это одна
$stmt[$j]= $dbh->query($sql[$j])->fetchAll(); //Input n
К сожалению, мой Английский очень плохо :(
Любая идея, как исправить этот сэр?
Благодаря перед тем
Показать файл dbconnect.php – rad11
Этот код уязвим для атак SQL-инъекций. Вы не должны создавать запросы путем конкатенации строк, особенно если пользовательский ввод не задействован, потому что пользователю нельзя доверять. Вместо этого используйте готовую операционную функцию MySQLI/PDO. – GordonM
Я думаю, что это похоже на этот вопрос: [http://stackoverflow.com/questions/8567847/loop-through-post-variables-with-similar-names](http://stackoverflow.com/questions/8567847/ loop-through-post-variables-with-similar-names) – cakpep