php
2012-02-05 6 views 0 likes 
0

SQL文でセッション名を使用すると結果は返ってきませんが、実際のユーザ名に置き換えると結果が返ってきます。セッション名と更新に問題があります

$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '{$_SESSION['username']}'")or die(mysql_error()); 
$results = (mysql_fetch_assoc($emails)) or die(mysql_error()); 
$email= $results['email']; 
echo "$email"; 
die(); 

また、アップデートが機能していません。

if(array_key_exists('item', $_POST)){ 
    $items = $_POST['item']; 

    //Loop through $_POST items, updating the database for each item 
    foreach ($items as $item) { 
     $Pquantity = intval($item[0]); 
     $Pidno = intval($item[1]); 
     $queryreg = mysql_query(" 
      UPDATE repplac 
       SET Pquantity = {$Pquantity} 
       WHERE 
         Pidno = {$Pidno} 
       AND 
         Uname = '{$_SESSION['username']}' 
     "); 
+5

こんにちは[小さなボビーテーブル](http://xkcd.com/327/)! – knittl

+0

'$ _SESSION ['username']'の実際の値をチェックしましたか? – Gumbo

答えて

0
$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."'")or die(mysql_error()); 
0

それはMYSQL SelectステートメントでなければなりませんようSESSIONに格納されている文字列[ユーザー名]と同じです。

$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."')or die(mysql_error());

そして、SQLインジェクションの脆弱性を防ぐために、ちょうどヒント:使用されている場合は、次のようにSQLを使用してみてくださいEVERあなたがGETまたはPOST経由で取得してデータベースにデータを挿入しないでください!データベースへの攻撃を防ぐには、文字列にintval()およびmysql_real_escape_string()を使用してください。

+1

クエリでエスケープされていない値を使用することは絶対に避けてください。可能な限り、準備されたステートメントを使用してください。 – knittl

+0

電子メールは現在動作していますが、更新はされていません – user1158373

関連する問題