2015-05-25 2 views
0

У меня есть этот код, который позволяет пользователю восстановить свой аккаунт из ссылки URLUPDATE запрос не работает, когда POST IsSet

<?php 
$servername = "localhost"; 
$username = " "; 
$password = " "; 
$dbname = " "; 

$code = $_GET['code']; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT com_code FROM user WHERE com_code = ".$_GET['code']; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<form action='reset.php?code=" . $row["com_code"]. "' method='post'>Enter New Password: <input type='text' name='new_password' placeholder='New Password'><br><input type='submit' value='Submit'></form>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 

<?php 
$servername = "localhost"; 
$username = " "; 
$password = " "; 
$dbname = " "; 

    $pword = $_POST['new_password']; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
if (isset($_POST['Submit'])) { 
$sql1 = "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'"; 
} 
if ($conn->query($sql1) === TRUE) { 
    echo "Password has been change successfully!"; 
} else { 
    echo "Error updating record: " . $conn->error; 
} 
?> 

я получаю ошибку:

Warning: mysqli::query(): Empty query in /home/u590953899/public_html/notify/reset.php on line 47 Error updating record:

Когда ты нажмите кнопку «Отправить», предположим, что ОБНОВЛЯЙТЕ базу данных, где com_code = $ GET url BUT
Что происходит, так это то, что он только перезагружает страницу, как это сделать Я это исправить?

Ссылка на него есть: http://notify.bithumor.co/reset.php?code=123456789

+0

Измените закрывающуюся фигурную скобку из условия isset внутри кода запроса. –

+0

Можете ли вы «повторить» свой запрос и посмотреть, какие параметры вы получите? – Alex

+0

Что я помещаю в запрос об ошибке для его эхо-ответа – Hilardy

ответ

0

Вы должны изменить свой код, чтобы быть внутри IsSet как это:

if (isset($_POST['Submit'])) { 
    $sql1 = "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'"; 

    if ($conn->query($sql1) === TRUE) { 
     echo "Password has been change successfully!"; 
    } else { 
     echo "Error updating record: " . $conn->error; 
    } 
    } 
+0

Он по-прежнему не работает, см. Notify.bithumor.co/reset.php?code=123456789 – Hilardy

+0

Ошибка показывает, что вы пропустили закрытие фигурных фигурные скобки '}' или дополнительные фигурные скобки где-то в коде. –

0

Сделайте следующие изменения в коде:

if (isset($_POST['Submit'])) { 
    $sql1 = "UPDATE user SET password='$pword', com_code IS NULL WHERE com_code = '$code'"; 

    if ($conn->query($sql1) === TRUE) { 
     echo "Password has been change successfully!"; 
    } else { 
     echo "Error updating record: " . $conn->error; 
    } 
} 
+0

Он по-прежнему не работает, см. Notify.bithumor.co/reset.php?code=123456789 – Hilardy

0

Мы используем IS NULL для проверки NULL в mysql

if (isset($_POST['Submit'])) { 
    $sql1 = "UPDATE user SET password='$pword', com_code IS NULL WHERE com_code = $code"; 
} 

Читать NULL Values в MYSQL

+0

ваш забудьте удалить равным в 'com_code' перед' IS NULL'. –

+0

Damm @IndrasinhBihola благодарит за ваше обновление. Теперь исправьте мой ответ – Saty

+0

Да, сейчас все в порядке. –

0

$_POST['Submit'] никогда не будет установлен, когда ваша кнопка представить не name="submit". Только с type="submit", или value="submit", или id="submit" этого не сделает. Для этого вам нужен атрибут name.

0

Сначала проверьте, что ваш тип ввода имеет name="Submit", если его не добавить. После этого эхо запрос первый,

if (isset($_POST['Submit'])) { 

    echo "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'"; 

    $sql1 = "UPDATE user SET password='$pword', com_code=NULL WHERE com_code = '$code'"; 

    if ($conn->query($sql1) === TRUE) { 
      echo "Password has been change successfully!"; 
    } else { 
      echo "Error updating record: " . $conn->error; 
     } 

    } 

А также весь код т.е. запрос выполнения и сообщения должны быть в том же, если оператор (если (Исеть ($ _ POST [ «Submit»]))).

Я надеюсь, что это сработает для вас.

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