[英]SQL query works in phpmyAdmin, not in php
如果我在phpMyAdmin中运行它(返回行),则此查询有效:
SELECT breweries.name AS brew_name,
employees.f_name,
employees.l_name,
employees.age,
employees.position,
employees.pay_hr,
beers.name AS fav_beer
FROM employees
INNER JOIN beers ON employees.beer_id = beers.id
INNER JOIN breweries ON employees.brewery_id = breweries.id
INNER JOIN locations ON breweries.location_id = locations.id
WHERE locations.city = "San Diego"
AND locations.state = "CA";
但是,当我通过表单获取用户输入并在城市/州/地区使用变量时,却没有结果:
$loc_str = $_GET["e_location"]; // Input is "San Diego, CA"
$loc_pieces = explode(",", $loc_str);
$city = $loc_pieces[0];
$state = $loc_pieces[1];
echo <<<res
Showing all employees working at breweries in $city, $state.
res; //Correctly echos San Diego, CA
$query = <<<stmt
SELECT breweries.name AS brew_name, employees.f_name, employees.l_name,
employees.age, employees.position, employees.pay_hr,
beers.name AS fav_beer
FROM employees INNER JOIN beers ON employees.beer_id = beers.id
INNER JOIN breweries ON employees.brewery_id = breweries.id
INNER JOIN locations ON breweries.location_id = locations.id
WHERE locations.city = "$city"
AND locations.state = "$state";
stmt;
$stmt = $mysql->prepare($query);
$stmt->execute();
$stmt->bind_result($b_name, $f_name, $l_name, $age, $pos, $pay, $fav_beer);
while ( $stmt->fetch() ) {
echo <<<res
<tr>
<td>$b_name</td>
<td>$f_name, $l_name</td>
<td>$age</td>
<td>$pos</td>
<td>$pay</td>
<td>$fav_beer</td>
</tr>
res;
} // NO HTML OUTPUT
我究竟做错了什么? 提前致谢。
eplode
后你的状态仍然有空间。 在执行查询之前,对生成的分解零件使用trim
:
$city = trim($loc_pieces[0]);
$state = trim($loc_pieces[1]);
接着:
$query = <<<stmt
SELECT breweries.name AS brew_name, employees.f_name, employees.l_name,
employees.age, employees.position, employees.pay_hr,
beers.name AS fav_beer
FROM employees INNER JOIN beers ON employees.beer_id = beers.id
INNER JOIN breweries ON employees.brewery_id = breweries.id
INNER JOIN locations ON breweries.location_id = locations.id
WHERE locations.city = ?
AND locations.state = ? ;
stmt;
$stmt = $mysql->prepare($query);
$stmt->bind_param('ss', $city, $state);
$stmt->execute();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.