2015-09-27 8 views
0

У меня возникла проблема с моим запросом обновления, когда пользователи запрашивают сброс пароля.PHP MySQL Update Query не выполняется

Он просто ничего не делает, это действительно показывает, что пароль был сброшен в соответствии с оповещения команды, но база данных не отражает обновление ...

Любая помощь будет велика, как я не могу видеть, где я буду неправильно ...

if(isset($_GET["acc"]) && isset($_GET["np"])){ 
     $acc=decrypt(htmlspecialchars($_GET["acc"])); 
     $np=decrypt(htmlspecialchars($_GET["np"])); 
     //var_dump($acc); 
     //var_dump($np); 

     $query="UPDATE `master_profile` SET `password`=? where `email_address`=?"; 
      if ($stmt = $connection_link->prepare($query)){ 
        // Bind the variables to the parameter as strings. 
        $stmt->bind_param("ss",$np,$acc); 
        // Execute the statement. 
        if($stmt->execute()){ 
         ?> 
         <script> 
         alert('Your password has been reset. Please login with your new password.'); 
         </script> 
         <? 
         //echo "Updated {$stmt->affected_rows} rows"; 
        }else{ 
         echo '<h1>An Error Has Occoured. Please try again later.</h1>'; 
        } 
        if ($stmt->errno) { 
         echo "FAILURE!!! " . $stmt->error; 
        } 
       // Close the prepared statement. 
        $stmt->close(); 
       } 
    } 

Update

Изменено if($stmt->execute(array($np,$acc))){} как предложено ниже, но это просто дает мне ошибку An Error Has Occoured. Please try again later., Как я могу поймать т его ошибка и сообщить о правильной ошибке?

Я пробовал $stmt->error; и $connection_link->error;, но оба просто дали пустое значение.

ответ

0

Поскольку вы используете анонимные заполнители, мне кажется, вам нужно опустить инструкцию привязки. Вместо этого можно поместить параметры в выполнение в виде массива и в порядке появления в заявлении

if($stmt->execute(array($acc, $np)){} 

Вы бы опускаем эту линию

$stmt->bind_param("ss",$np,$acc); 
+0

Когда я обновить его, как вы предложили, я получаю ошибку из выражения else. Ошибка. Повторите попытку позже. ' – Marcel

+0

Попробуйте удалить обратные тики – silversunhunter

+0

Я не уверен, что вы имеете в виду, в настоящее время код выполнения выглядит так: if ($ stmt-> execute (array ($ np, $ acc))) {}' на какие обратные тики вы имеете в виду? – Marcel