Dubbele Like (& SQL Join)
Ik probeer wat dingen te echo'en op mijn site dat gaat verder goed maar ik wou hetgene wat geëchood moet worden wat specifieker maken.
Ik heb deze code gedaan maar dan krijg ik een error.
Code
Als ik de code zo doe:
Dan werkt het wel maar ik wil tot die alleen de dingen echood waar sent 0 is
Error:
Code (php)
1
2
3
2
3
<?php
niet gelukt om de query: SELECT * FROM orders WHERE email LIKE 'henk' AND sent LIKE == 0 uit te voeren op Resource id #3
?>
niet gelukt om de query: SELECT * FROM orders WHERE email LIKE 'henk' AND sent LIKE == 0 uit te voeren op Resource id #3
?>
hoe kan ik dit het beste oplossen?
Gewijzigd op 15/11/2012 10:04:30 door - Marco -
Je hebt een dubbel = teken gebruikt in je query dit wordt niet ondersteund in mysql (alleen in php, zelfs ===)
Deze query zal wel het gewenste resultaat geven:
Code (php)
1
2
3
2
3
<?php
$sql4 = "SELECT * FROM `orders` WHERE `email` LIKE '".$test."' AND `sent` = 0";
?>
$sql4 = "SELECT * FROM `orders` WHERE `email` LIKE '".$test."' AND `sent` = 0";
?>
Of
Groet,
Erwin van Hoof
SiteOn
Gewijzigd op 15/11/2012 09:37:01 door Erwin van Hoof
Gewijzigd op 15/11/2012 10:58:05 door - Marco -
Erwin van Hoof op 15/11/2012 09:35:22:
Dat vind ik wel eigenaardig dat dit goed werkt, want er mankeert nogal wat aan de quoting en aan de wildcards. Volgens mij moet het zo.
Tabelnamen en kolomnamen horen normaliter niet gequote te worden. Ik neem aan dat 'sent' ook een kolomnaam is want als je hem quote krijgt hij een andere betekenis. Dan staat er "... AND 'constante' = getal". Maar hij stond tussen backquotes en daar rept de MySQL handleiding helemaal niet over dus dan weet ik niet wat er gebeurt.
En dan: je gebruikt "LIKE" als je wildcards wilt gebruiken: dus "%" voor 0 of meer willekeurige tekens en "_" voor 1 willekeurig letterteken. Zitten die wildcars in "$test"? Anders kun je beter "=" gebruiken in plaats van "LIKE".
Gewijzigd op 15/11/2012 12:20:48 door Ivo Breeden
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$test = $_SESSION["email"];
if(isset($_POST["uitloggen"]))
{
session_destroy();
header("Location:".$_SERVER["PHP_SELF"]);
}
?>
$test = $_SESSION["email"];
if(isset($_POST["uitloggen"]))
{
session_destroy();
header("Location:".$_SERVER["PHP_SELF"]);
}
?>
en ik gebruik deze sql ( hij werkt hoor :P )
Want als er een slimmerik is die als e-mail adres "%" (wildcard) in vult dan zou die de orders van anderen kunnen manipuleren.
Groet,
Ivo
Niet waar email $test bevat.
Backticks `` zijn puur voor de veiligheid dat het hier om een veld,tabelnaam gaat. Het is verstandig om deze te gebruiken. Indien er veldnamen gebruikt worden zoals bijv. count of limit (dit zijn namelijk ook mysql functies).
Groet,
Erwin van Hoof
SiteOn
Dank je Erwin, dat van die backticks wist ik niet.
http://www.phphulp.nl/php/forum/topic/wel-of-geen-backticks-in-een-query/62957/
http://www.phphulp.nl/php/forum/topic/backticks/62061/
Gewijzigd op 15/11/2012 14:05:58 door - Marco -
Backticks zijn niet verplicht, net zoals het niet verplicht is om een tabs te gebruiken om je code netjes te laten inspringen etc.
Voor mij verbeterd het de leesbaarheid van de SQL code. Bij het gebruik van backticks kan er geen twijfel over bestaan dat het een benaming is van een tabel,kolom of veld.
Ik raad het gebruik van functies/commando's als tabel/kolom/veld namen af zoals count, limit, etc.
Je hebt wel felle voor en tegenstanders van backticks, ik denk dat dit vrij persoonlijk is aangezien het geen toegevoegde waarde heeft, ik vindt dat een sql-query leesbaarder word met backticks. Het is wel zo mocht je nog ooit in andere DB-types gaan werken ondersteunen deze geen backticks.
Gewijzigd op 15/11/2012 16:24:17 door Erwin van Hoof
In SQL geen backticks gebruiken is mijn mening. Eigenlijk helemaal geen backticks gebruiken, zijn totaal overbodig. Je kan dan geen reserved words gebruiken voor database objecten (tabelnamen e.d.) maar ook dat is juist een afrader. Geen reserved words gebruiken las MySQL objectnaam.