Forum Moderators: coopster

Message Too Old, No Replies

empty echo

Prepared Statements

         

bethesda

7:07 pm on Nov 22, 2011 (gmt 0)

10+ Year Member




$db = new mysqli('X', 'X', 'X', 'X');
$db -> query("SET NAMES 'latin2'");
$stmt = $db->stmt_init();
if($stmt->prepare("DELETE FROM `a` WHERE `b` = ?")) {
$stmt->bind_param('s', $x);
$x = "$user";
$stmt->execute();
if (!$stmt) {
$feedback1 = die(mysql_error());
echo "myscript.php error #209 $feedback1";
$stmt->close();
$db->close();
}} else {
echo "something";
echo "something2";
}
$stmt->close();
$db->close();


Well - I do not receive the result of echo - (something and something2)..
Why ?

penders

8:51 pm on Nov 22, 2011 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



"something" would only echo if your prepare() statement failed. Should it fail?

bethesda

9:12 pm on Nov 22, 2011 (gmt 0)

10+ Year Member



But this code is responsible for the failure:


if (!$stmt) {
$feedback1 = die(mysql_error());
echo "myscript.php error #209 $feedback1";


yes ?

bethesda

10:38 pm on Nov 22, 2011 (gmt 0)

10+ Year Member



Ok i think i get it.
This work's fine:


$db = new mysqli('X', 'X', 'X', 'X');
$db -> query("SET NAMES 'latin2'");
$stmt = $db->stmt_init();
if($stmt->prepare("DELETE FROM `a` WHERE `b` = ?")) {
$stmt->bind_param('s', $x);
$x = "$user";
$stmt->execute();
if ($stmt) {
echo "something";
echo "something2";
} else {
$feedback1 = die(mysql_error());
echo "myscript.php error #209 $feedback1";
$stmt->close();
$db->close();
}}
$stmt->close();
$db->close();

eelixduppy

10:44 pm on Nov 22, 2011 (gmt 0)



FYI, die() does not have a return value. Should instead be something along the lines of this:

echo sprintf("myscript.php error #209 %s\n", mysql_error());

bethesda

11:21 pm on Nov 22, 2011 (gmt 0)

10+ Year Member



I keep it in mind. Thanks.