У меня есть запрос на обновление, который всегда возвращает true, но не обновляет записи в базе данных. Я также распечатал выражение sql и, когда я пытаюсь запустить его в phpmyadmin, он выполняется успешно. Даже когда нет ошибок при печати mysql_error(). это код: -
if (isset($_POST['submit']))
{
$old_number = stripslashes($_REQUEST['old_number']); // removes backslashes
//$old_number = mysqli_real_escape_string($con,$old_number); //escapes special characters in a string
$new_number = stripslashes($_REQUEST['new_number']);
//$new_number = mysqli_real_escape_string($con,$new_number);
//Checking is user existing in the database or not
$query= "SELECT * FROM 'users' WHERE username='$username' and contact='$old_number'";
$result = mysqli_query($con,$query) or die(mysql_error());
$rows = mysqli_num_rows($result);
if($rows==1)
{
echo $num_update = "UPDATE users SET contact=$new_number WHERE username='$username'";
$result_num = mysqli_query($con,$query) or die(mysql_error());
$rows_num = mysqli_num_rows($result_num);
if($rows_num==TRUE)
{?>
<div class='success'>
<h3>Your mobile number is updated.</h3>
<br/>Click here to <a href='login.php'>Login</a></div>
<?php //header("Location: login.php"); // Redirect user to index.php
}else{
echo "<div class='error'><h3>No Records found with entered contact info</h3><br/>Click here to <a href='login.php'>Login</a></div>";
}
}
else{
echo "<div class='error'><h3>No Records found with entered contact info</h3><br/>Click here to <a href='login.php'>Login</a></div>";
}
}
Это таблица, в которой я пытаюсь обновить контактный номер: -
CREATE TABLE IF NOT EXISTS 'users' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'username' varchar(50) NOT NULL,
'email' varchar(50) NOT NULL,
'contact' varchar(30) DEFAULT NULL,
'creation_date' date NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
В вашей переменной запроса возникает проблема с использованием неправильной переменной при выполнении запроса.
$num_update = "UPDATE users SET contact=$new_number WHERE
username='$username'";
Изменить следующую строку
$result_num = mysqli_query($con,$query) or die(mysql_error());
с
$result_num = mysqli_query($con, $num_update) or die(mysql_error());
+ Изменить
contact=$new_number
в
contact='$new_number'
Contact
varchar
Передача параметров непосредственно так, как это может привести к SQL Injection. Используйте привязку параметров для обеспечения безопасности. Читайте о SQL-инъекции.
"UPDATE users SET contact='$new_number' WHERE username='$username'"