2016-08-28 27 views
2

これに関する関連する解決策を見てきましたが、試してみましたが、それらの作業はありませんでした。 これはデータベースの更新用のコードです。mysql_errorはエラーの兆候を示していません。何をすべきかわからない。助けて!データベースは更新されません、mysql_errorはエラーを表示しません

<?php 
     mysql_select_db("dbUsers");  
     if(isset($_POST['btnSave'])){ 

     $firstname=$_POST['firstname']; 
     $lastname=$_POST['lastname']; 
     $address=$_POST['address']; 

     $query1 =("UPDATE `webuser` SET `firstname`='".$firstname."', 
       `lastname`='".$lastname."',`address`='".$address."' 
       WHERE empNo = '".$selEmp."' "); 

     $result = mysql_query($query1) or die(mysql_error()); 
     } 
     mysql_close($conn); 

    ?> 
+0

ステートメントをエコーし​​、更新行の後ろにexitを置いてチェックします。更新されるすべての詳細がクエリに存在するかどうか。 –

+1

**危険**:[削除済み](http://php.net/ [廃止**データベースAPI](http://stackoverflow.com/q/12859942/19068))を使用しています。 manual/en/mysql.php)をPHPから入手してください。 [現代的な代替品](http://php.net/manual/en/mysqlinfo.api.choosing.php)を選択する必要があります。あなたは** [SQLインジェクション攻撃](http://bobby-tables.com/)**に対して脆弱です**現代のAPIは、[防御]を容易にします(http://stackoverflow.com/questions/60174/最良の方法からSQLへのPHPインジェクション)をあなた自身から守ってください。 – Quentin

+0

@ NareshKumar.Pありがとうございます。私はエラーを見た。 empNoが表示されていない、私はまだ理由を把握しようとしています。私はそれをエコーすることができますが、私はそれをクエリで使用することはできません。 – eshi

答えて

0

このように更新クエリを変更します。中カッコは使用できません。

更新時にempNoが存在することを確認してください。

<?php 
mysql_select_db("dbUsers");  
if(isset($_POST['btnSave'])){ 
$selEmp = $_POST['emp_id']; 
$firstname=$_POST['firstname']; 
$lastname=$_POST['lastname']; 
$address=$_POST['address']; 
$query1 ="UPDATE `webuser` SET `firstname`='".$firstname."', 
`lastname`='".$lastname."',`address`='".$address."' 
WHERE empNo = '".$selEmp."'";  
$result = mysql_query($query1) or die(mysql_error()); 
} 
mysql_close($conn); 
?> 

<form method="POST" action=""> 
    <input type="hidden" name="emp_id" value="<?php echo $data['id']; ?>" /> 
    <input type="text" name="firstname" value="<?php echo $data['firstname']; ?>" /> 
    <input type="text" name="lastname" value="<?php echo $data['lastname']; ?>" /> 
    <textarea name="address"><?php echo $data['address']; ?></textarea> 
    <input type="submit" name="btnSave" value="UPDATE" /> 
</form> 
+0

あなたが自分のコードで何らかの障害に直面した場合、考えを共有してください。 –

+0

ホープので、この答えはあなたのために便利です@eshi ... –

+0

ありがとうNaresh。私は問題を修正した。私が必要とする変数は、isset関数の内部ではアクセスできないので、私が行ったことは、隠された入力を作成し、その値を渡して取得することです。再度ありがとう:) – eshi

1

mysqlをmysqlの代わりに使用する代わりに、mysqliを優先して保護します。

は...更新quesryについて

$conn = mysqli_connect($servername, $username, $password, $dbname); 

(その値を持つ変数を作成する)を使用する接続のために以下のコードを使用

$sql = "UPDATE webuser SET firstname='".$firtname."' WHERE empNo='".$selEmp."'; 

及び使用クエリに...

mysqli_query($conn, $sql) 

私はあなたのコード全体について言及していませんが、今理解していただければ幸いです。

define('DB_HOST', 'localhost'); 
define('DB_NAME', 'dbUsers'); 
define('DB_USER', 'your_username'); 
define('DB_PASSWORD', 'your_password'); 

try { 
    //Make your connection handler to your database 
    $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); 

    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $address = $_POST['address']; 

    $sql = "UPDATE webuser SET firstname = :firstname, lastname = :lastname, address = :address WHERE empNo = :emp_no"; 
    $stmt = $conn->prepare($sql); 
    $stmt->execute(array(':firstname' => $firstname, ':lastname' => $lastname, ':address' => $address, ':emp_no' => $selEmp)); 

} catch(PDOException $e) { 
    echo $e->getMessage(); 
    die(); 
} 

詳細情報here:SQLインジェクションと非推奨mysql_*機能が準備された文とPDOを使用を避けるために

+1

fyi、これは[SQLインジェクション攻撃](http://bobby-tables.com/)に対して脆弱です。パラメータ付きで準備されたクエリを使用してください。 –

+0

ありがとう、Vivek。私は問題thoを修正しました:) – eshi

+0

それはちょうどそれの一部であり、あなたのコメントのためのおかげで.. @RyanVincent –

0

+0

キャッチはどこですか? –

+0

なぜdownvote?何か不足していますか? –

+0

ありがとう、私は問題を解決しました。 :) – eshi

関連する問題