Моя цель — сравнить 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>
Спасибо !
Этот код очень плох, и вы получаете неправильный порядок операций. Попробуйте очистить свой код, и это облегчит отладку.
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
}
Других решений пока нет …