$update = "INSERT sanjana SET $name ='$usernames'";
這可能意味着作爲UPDATE語句,所以更新應該
$update = "UPDATE sanjana set name = '$usernames'";
我把name
,而不是$name
因您的第二個查詢並沒有看到$name
被定義任何地方。請注意,這會將sanjana
表中每行的name
列中的值更改爲$用戶名的值,通常這樣的語句會受到conditions(例如)的限制。WHERE userid = 33
$update1 = "INSERT INTO sanjana (name) VALUES ($usernames)";
它需要一個INSERT聲明已經值引述所以
$update1 = "INSERT INTO sanjana (name) VALUES ('$usernames')";
警惕的是把變量直接進入您的查詢字符串的這種方式讓你容易受到SQL injection,打擊這種請使用PDO或mysqli擴展名,它們都可以通過爲您提供prepared statements來保護您免受注入;普通的舊mysql_ *不推薦再使用。
使用你會使用PDO預處理語句這樣
<?php
// we got $usernames from wherever you define it
$pdo = new PDO('mysql:dbname=mydb;host=localhost','username','password');
// to insert
$statement = $pdo->prepare('INSERT INTO `sanjana` (name) VALUES (:name)');
// the following replaces :name with $usernames in a safe manner, defeating sql injection
$statement->bindParam(':name',$usernames);
$statement->execute(); // it is done
// to update
$statement = $pdo->prepare('UPDATE `sanjan` SET `name` = :name');
$statement->bindParam(':name',$usernames);
$statement->execute(); // it is done
所以你可以看到保護您的代碼的惡意輸入並不難,它甚至讓你的SQL語句很多更容易閱讀。你有沒有注意到你甚至不需要在SQL語句中引用你的值?準備好的陳述爲你照顧!減少代碼中出現錯誤的方法之一。
請務必閱讀起來就可以了,它會爲你節省頭痛。 PDO甚至具有獨立於數據庫的優點,使得使用現有代碼更容易使用另一個數據庫。
'mysql_錯誤()'和'mysql_錯誤號()'是你最好的朋友...... – CodeZombie
請爲你的自我,停止使用MySQL的功能!你有PDO,MySQLi和很多抽象層,ORM,Object Mapping等等! MySQL的功能很糟糕。 – Exos