I am having some issues with PDO. First issue is that in my connection string, I cannot use variables defined in another file (tried include & require). It gives me an error and shows the connectionstring having the variable name instead of the value (yes, single and double quotes were tried).
Second issue and more pressing is that I am getting an error when trying to validate a login. I had it working with the old mysqli, so I know that the html is valid, just not the new logic. Attached is the function I am using:
JavaScript
x
function validateuser($un, $em)
{
try
{
$db = new PDO("mysql:host=localhost;dbname=XX", 'aa', 'bb', array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
$stmt = $db->query("SELECT AcctType FROM usr WHERE LOGIN_ID=? or CONTACT_EMAIL=?;");
$stmt->execute(array(
$un,
$em
));
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
catch(exception $e)
{
echo $e;
}
}
the exact error i get is:
JavaScript
Exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2031 ' in db_backend.php:110 Stack trace: #0 db_backend.php(110): PDO->query('SELECT AcctType...') #1 newuser.php(42): validateuser('Nefer', 'neferitous@blah...') #2 {main}
Thanks in advance!!
Advertisement
Answer
Here is my final code to make this part of the PDO statement work:
JavaScript
function validateuser($un, $em) {
try {
$db = new PDO(
"mysql:host=localhost;dbname=db",
'id',
'pass',
array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
$stmt = $db->prepare("SELECT ACCTTYPE FROM users WHERE LOGIN_ID=? or CONTACT_EMAIL=?;");
$stmt->bindParam(1, $un, PDO::PARAM_STR, 15);
$stmt->bindParam(2, $em, PDO::PARAM_STR, 150);
$stmt->execute();
$result = $stmt->fetch();
return $result["ACCTTYPE"];
} catch (exception $e) {
echo $e;
}
}