2013-06-12 3 views
0

Следующий код отобразит «12» на экране. Вот и все. Эти номера эха были добавлены для отладки.PHP Ошибка подтверждения инструкции

Он должен отображать «123» и вставлять в базу данных MySQL переменные в инструкции. По какой-то причине он заканчивается в предложении подготовки. Проверка ошибки fail() никогда не будет вызвана. На самом деле, ничего не вызвано после заявления о подготовке.

Я был повсюду и считаю, что я делаю все, что нужно должным образом, но это более вероятно, что-то я сделал.

Может ли кто-нибудь сказать мне, почему заявление о подготовке не работает таким образом?

$query = "insert into member(mail, user, val) values (?, ?, ?)"; 
$uuu = [email protected]; 
$hhh = Blah Williams; 
$val = 0; 
echo "1"; 
if($stmt = $this->conn) 
{ 
    echo "2"; 
    $stmt->prepare($query) || $this->fail('MySQL prepare', $stmt->error); 
    echo "3"; 
    $stmt->bind_param('ssi', $uuu, $hhh, $val) 
     || $this->fail('MySQL bind_param', $stmt->error); 
    $stmt->execute(); 
    if (!$stmt->execute()) 
    { 
     if ($stmt->errno === 1062 /* ER_DUP_ENTRY */) 
     { 
      $this->fail('This username is already taken'); 
     } 
     else 
     { 
      $this->fail('MySQL execute', $stmt->error); 
     } 
    } 
} 
else 
{/*error check*/ 
    $this->fail('MySQL insert prepare failed', $stmt->error); 
    return 0; 
} 
$stmt->close(); 
return true; 
+0

Убедитесь, что у вас всегда есть php.ini параметр включен, чтобы сообщить все ошибки на уровне, включая фатальные ошибки. Это может сэкономить много вашего времени. или использовать xdebug как расширение отладки. – varuog

+0

К сожалению, у меня нет доступа к файлу php.ini на этом сервере. – Brru

+0

Было бы удобно настроить wamp/lamp/mamp для разработки и тестирования локально, а не для любого стороннего сервера. хотя вы можете использовать http://php.net/ini_set для переопределения некоторых параметров php.ini во время выполнения – varuog

ответ

1

Необходимо использовать как свое задание, так и будет верно.

$stmt = $this->conn->prepare($query); 

Чтобы проверить, почему это упущение, использование:

var_dump($stmt->errorInfo()); 
+0

if ($ stmt = $ this-> conn-> prepare ($ query)) – Brru

+0

Уверен, что вы можете это сделать – Martin

+0

Нет - вы можете сохранить свою || $ this-> fail (..), если хотите. Оба метода проверяют, возвращает ли он true, это просто зависит от того, какую логику вы хотите использовать для обработки после – Martin

Смежные вопросы