Okay this has been driving me crazy for the last few hours! So simple but it just doesn’t work and I really don’t see what’s going wrong here.
A simple sql query doesn’t work when using a variable, while with identical plain text it does.
To give a clear example, I have the code below with the output of all possible things that can go wrong.
<?php
$sRecipient = $data[0];
$sTitle = $titel;
$sBody = $bericht;
$sSender = $_SESSION['username'];
$aAttachments = null;
$iType = 0;
echo "Output $sRecipient: ".$sRecipient."";
$pdo = new PDO(DB_CONFIG_DSN, DB_CONFIG_USER, DB_CONFIG_PW);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');
// NOT WORKING ???????????
$sql_user_details_var = "SELECT gebruikersnaam, internnummer FROM `leerlingen` WHERE `gebruikersnaam`='".$sRecipient."'";
$user_details_result = $pdo->query($sql_user_details_var);
$user_details_result = $pdo->query($sql_user_details_var)->fetch(PDO::FETCH_ASSOC);
// WORKING!
$sql_user_details_text = "SELECT gebruikersnaam, internnummer FROM `leerlingen` WHERE `gebruikersnaam`='[email protected]'";
$user_details_result = $pdo->query($sql_user_details_text);
$user_details_result = $pdo->query($sql_user_details_text)->fetch(PDO::FETCH_ASSOC);
echo "<br /><br />SQL with text: ".$sql_user_details_var."<br />";
echo "<br />SQL with var: ".$sql_user_details_text."<br /><br />";
// FOUND THE ROW!
$result_text = $pdo->query('select count(*) from `leerlingen` WHERE `gebruikersnaam`="[email protected]"')->fetchColumn();
// NOTHING FOUND ???????????
$result_var = $pdo->query('select count(*) from `leerlingen` WHERE `gebruikersnaam`="'.$sRecipient.'"')->fetchColumn();
echo "Result text: ".$result_text."<br />";
echo "Result var: ".$result_var."<br />";
?>
This is the output:
Output $sRecipient: [email protected]
SQL with text: SELECT gebruikersnaam, internnummer FROM `leerlingen` WHERE `gebruikersnaam`='[email protected]'
SQL with var: SELECT gebruikersnaam, internnummer FROM `leerlingen` WHERE `gebruikersnaam`='[email protected]'
Result text: 1
Result var: 0
Does anyone have any idea what I’m overlooking?
Tried everything, although you can’t go wrong with this, can you?