html — сравнение моего текстового поля в формате PHP со значением поля базы данных

Моя цель — сравнить oldwifi name, oldwifipassword с inputbox1 и input box2.Я хочу разрешить пользователю изменять wifi имя и пароль только после подтверждения старого wifiname и пароля.

Ниже мой код.

<html>
<body>
<?php
$con = mysql_connect("localhost","user","password");
$oldwifi = mysql_real_escape_string($_POST['oldwifi']);
$oldpass = mysql_real_escape_string($_POST['oldpass']);
$sql="UPDATE test SET dboldwifi = '".$oldwifi."',dboldpass = '".$oldpass."'WHERE id = '1'";
mysql_select_db("test", $con);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
else if(mysql_query($sql)&&strcmp($oldwifi,'dboldwifi')==0&&strcmp($oldpass,'dboldpass')==0)
{
echo "New wifi and password saved successfully !";
}
else
{
echo "Old credentials mismatch";
die('Error: ' . mysql_error());
}
mysql_close($con);
?>
</body>
</html>

Моя база данных:

mysql> select * from test;
+-----------+-----------+----+
| dboldwifi | dboldpass | id |
+-----------+-----------+----+
| Tarzan    | Jane      |  1 |
+-----------+-----------+----+

HTML-код

<html>

<body>

<h1>A small example page to insert some data in to the MySQL database using PHP</h1>

<form action="insert.php" method="post">

Firstname: <input type="text" name="oldwifi" /><br><br>

Lastname: <input type="text" name="oldpass" /><br><br><input type="submit" />

</form>

</body>
</html>

Результат вывода: Несоответствие старых учетных данныхОшибка:

Я новичок в PHP MySQL нужна помощь, где я делаю неправильно!

ниже работает код, когда я пытаюсь вставить данные;

<html>
<body>
<?php
$con = mysql_connect("localhost","user","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test", $con);

$sql="INSERT INTO test (dboldwifi, dboldpass)VALUES ('$_POST[oldwifi]','$_POST[oldpass]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
</body>
</html>

Спасибо !

0

Решение

Этот код очень плох, и вы получаете неправильный порядок операций. Попробуйте очистить свой код, и это облегчит отладку.

elseif(mysql_query($sql)&&strcmp($oldwifi,'dboldwifi')==0&&strcmp($oldpass,'dboldpass')==0)

Это буквально говорит:

if (updateTheRow && noDifferenceWifi && noDifferentPwd)

То, что вы хотите сказать, это:

if (noDifferenceWifi && noDifferentPwd) {
updateTheRow

Кроме того, вы сравниваете то, что пользователь ввел в буквальную строку «dboldwifi».

Попробуй это:

<?php
// Set up your connection here. You can also put this in a config file
// but the whole point is to get access to the $pdo variable.
// See line 17
$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);

// Don't need to escape because PDO is awesome
$oldwifi = $_POST['oldwifi'];
$oldpass = $_POST['oldpass'];

// Now use that $pdo variable in your application to query, update, delete etc.
$stmt = $pdo->query('SELECT 1 FROM test WHERE dboldwifi=? AND dboldpass=?');
$stmt->execute([$oldwifi, $oldpass]);
$match = $stmt->fetchColumn();

if ($match) {
// Now update your row here using PDO.
// https://phpdelusions.net/pdo#dml
}
0

Другие решения

Других решений пока нет …