datoshway Posted November 4, 2014 Share Posted November 4, 2014 (edited) Below is my query, I have a column called boolActivate in my tblProperties table but I can't figure out how to put in a where clause so it reads something like WHERE boolActivate = 1 $strQuery = sprintf( "SELECT p.*, a.strAreaName FROM tblProperties p LEFT JOIN tblAreas a ON p.intAreaID = a.intID WHERE p.intID = %d", intval($intPropertyID)); Using MYSQL 5 Edited November 4, 2014 by datoshway Quote Link to comment https://forums.phpfreaks.com/topic/292273-help-with-a-joined-query/ Share on other sites More sharing options...
Jacques1 Posted November 4, 2014 Share Posted November 4, 2014 What's the problem? You've already written down the exact WHERE clause. Besides that, you definitely need to learn how to write secure queries with prepared statements or manual escaping. No, casting with intval() is not a valid approach. It's actually harmful. Quote Link to comment https://forums.phpfreaks.com/topic/292273-help-with-a-joined-query/#findComment-1495730 Share on other sites More sharing options...
datoshway Posted November 4, 2014 Author Share Posted November 4, 2014 It's not in my query. The problem is when I put it in the query like: $strQuery = sprintf( "SELECT p.*, a.strAreaName FROM tblProperties p LEFT JOIN tblAreas a ON p.intAreaID = a.intID WHERE p.intID = %d AND p.boolActivate = 1", intval($intPropertyID)); it doesn't work. Quote Link to comment https://forums.phpfreaks.com/topic/292273-help-with-a-joined-query/#findComment-1495731 Share on other sites More sharing options...
Jacques1 Posted November 5, 2014 Share Posted November 5, 2014 (edited) “Doesn't work”? Can you be a bit more specific? What is the problem? What's the expected result, and what's the actual result? We don't know anything about your project or the data you're working with, so if you want us to help you, then we need concrete info. Have you echoed the resulting query and tried it in phpmyadmin? Edited November 5, 2014 by Jacques1 Quote Link to comment https://forums.phpfreaks.com/topic/292273-help-with-a-joined-query/#findComment-1495805 Share on other sites More sharing options...
datoshway Posted November 9, 2014 Author Share Posted November 9, 2014 (edited) Sure thing. Below is my full query. This is for a detail page on a real estate website. So if boolActivate=0 then the property should not display anything. $strQuery = sprintf( "SELECT p.*, a.strAreaName FROM tblProperties p LEFT JOIN tblAreas a ON p.intAreaID = a.intID WHERE p.intID = %d AND p.boolActivate = 1", intval($intPropertyID)); $queryGetProperty = $objDatabase->query($strQuery); if ($objDatabase->num_rows($queryGetProperty) > 0) { $arrRow = $objDatabase->fetch_assoc($queryGetProperty); extract($arrRow); if (strlen($dtDateAvailable) > 0) { $dtDateAvailable = date("m/d/y", strtotime($dtDateAvailable)); } if (strlen($dtDateAvailableSummer) > 0) { $dtDateAvailable = date("m/d/y", strtotime($dtDateAvailableSummer)); } if (strlen($dtDateAvailableWinter) > 0) { $dtDateAvailable = date("m/d/y", strtotime($dtDateAvailableWinter)); } } $objDatabase->free_result($queryGetProperty); $strQuery = sprintf( "SELECT * FROM tblPropertiesPhotos WHERE intPropertyID = %d", intval($intPropertyID)); $queryGetPhotos = $objDatabase->query($strQuery); Below is a sample echo on the page for part of the content. <?php if (($dblPriceYearly > 0) && (strlen($dtDateAvailable) > 0)) { echo date("m/d/y", strtotime($dtDateAvailable)) . " (Y) "; } if (($dblPriceSummer > 0) && (strlen($dtDateAvailableSummer) > 0)) { echo date("m/d/y", strtotime($dtDateAvailableSummer)) . " (S) "; } if (($dblPriceWinter > 0) && (strlen($dtDateAvailableWinter) > 0)) { echo date("m/d/y", strtotime($dtDateAvailableWinter)) . " (W)"; } ?> What i'm getting is a detail page with all the relaivant info. I am looking for it to error out and not display any info just as it would if you went to the page and put in an incorrect ?=ID Edited November 9, 2014 by datoshway Quote Link to comment https://forums.phpfreaks.com/topic/292273-help-with-a-joined-query/#findComment-1496135 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.