where clause in inner join query
please help me out regarding this query:
function viewServices($userpno)
{
echo $userpno;
$this->query = "
SELECT task.employee_id , task.user_id , task.service_id, service.name AS servicename ,
service.description AS servicedescription, employee.name AS employeename, employee.pic_path AS employeepicture,
employee.pic_path
FROM task where task.user_id = '开发者_StackOverflow社区$userpno'
INNER JOIN employee ON employee.pno = task.employee_id
INNER JOIN user ON user.pno = task.user_id
INNER JOIN service ON service.service_id = task.service_id
";
}
The query works perfectly without:
WHERE task.user_id = '$userpno'
I have tried in this way also:
WHERE task.user_id = $userpno
But it doesn't work.
The error is:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\admin\classes\Task.php on line 22
Please quide me about how can I put WHERE clause.
WHERE clause goes at the end of the query
SELECT task.employee_id , task.user_id , task.service_id, service.name AS servicename ,service.description AS servicedescription, employee.name AS employeename, employee.pic_path AS employeepicture,employee.pic_path
FROM task
INNER JOIN employee ON employee.pno = task.employee_id
INNER JOIN user ON user.pno = task.user_id
INNER JOIN service ON service.service_id = task.service_id
where task.user_id = '$userpno'
Query structure is: SELECT, FROM (joins here), WHERE
you had the WHERE too soon
$this->query =
"SELECT task.employee_id , task.user_id , task.service_id, service.name AS servicename ,service.description AS servicedescription, employee.name AS employeename, employee.pic_path AS employeepicture,employee.pic_path
FROM task INNER JOIN employee ON employee.pno = task.employee_id INNER JOIN user ON user.pno = task.user_id INNER JOIN service ON service.service_id = task.service_id
WHERE task.user_id = '$userpno'";
Queries that run correctly return a resource, those that fail return false
Try:
$this->query = "SELECT task.employee_id , task.user_id , task.service_id,
service.name AS servicename ,service.description AS servicedescription,
employee.name AS employeename, employee.pic_path AS employeepicture,employee.pic_path
FROM task
INNER JOIN employee ON employee.pno = task.employee_id
INNER JOIN user ON user.pno = task.user_id
INNER JOIN service ON service.service_id = task.service_id
where task.user_id = '$userpno'";
You have JOIN clauses after your WHERE clause. That's not valid, so your query is returning false
because it failed.
For reference, parts of a SELECT query must be in the order/format as outlined in the docs here: http://dev.mysql.com/doc/refman/5.0/en/select.html
精彩评论