2017-09-26 11 views
0

私の目的はoldwifiの名前oldwifipasswordをinputbox1と入力ボックス2と比較することです。古いwifinameとパスワードを確認した後でのみ、ユーザーがWiFi名とパスワードを変更できるようにします。PHP my sqlのテキストボックスの値とデータベースのフィールド値の比較

以下は私のコードです。

<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> 

出力結果:旧資格情報mismatchError:

私は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

をen/function.mysql-query.php)インタフェースを使用します。それはひどいので、PHP 7では削除されました。[PDOは学ぶのが難しくありません](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo- for database-access /)、[PHP The Right Way](http://www.phptherightway.com/)のようなガイドはベストプラクティスの説明に役立ちます。 **あなたのユーザーパラメータが[正しくエスケープされている](http://bobby-tables.com/php)か、重大な[SQLインジェクションバグ](http://bobby-tables.com/ )。 – tadman

+0

ここにあるラベルはファーストネーム/ラストネームで、私はあなたが何らかの種類の既存のスクリプトを適用していると推測できます。**このコードをベースとして使用しないでください。それは古代であり、潜在的な危険に満ちています。 – tadman

+0

応答tadmanのおかげで!はい、私は初心者だと言って、私はいくつかの既存のスクリプトに従っています。私はPDOを学ぼうとするつもりですが、今のところ私は質問を無視し、私の質問に対する解決策があるかどうか教えてください。 –

答えて

0

このコードは非常に悪く、操作の順序が間違っています。あなたのコードをクリーンアップしようとすると、デバッグが容易になります。

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

これは文字通り言っている:あなたはそれが言いたい何

if (updateTheRow && noDifferenceWifi && noDifferentPwd) 

は次のようになります。また、ユーザーが文字列リテラルに入力したもの

if (noDifferenceWifi && noDifferentPwd) { 
    updateTheRow 

比較しています'dboldwifi'。

このお試しください:http://php.net/manual/(あなただけのPHPを学習している場合は、[ `mysql_query`]時代遅れを習得しないでください** WARNING **

<?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

ありがとうございましたあなたの時間のためにMr waterloomatt。あなたのコードを試してみましょう。それは今私にはっきりとした絵を与えましたが、PDOは私にとって新しいものです。 –

関連する問題