2011-01-15 3 views
0

これはエラーです。 (あなたのSQL構文でエラーが発生している。1行目で「@ myemail.net」を近く使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください)コンタクトエラーを挿入する

$user_id = $_SESSION['user_id']; 

    $emails = $_REQUEST['emails']; 
       $subject = "Invitation from $email"; 
       $headers = 'From: '.$email; 
       $emails = $_REQUEST['emails']; 
       foreach ($emails as $to) { 
        list($to,$name) = split(':::',$to,2); 
        $message = "Hi $name, $email would like you to take a look at this site! http://www.lunarsys.com\r\n\r\n"; 
        mail($to, $subject, $message, $headers); 
        echo "Mail sent to $name ($to)<br/>\r\n"; 



    $query = "SELECT j_user_id FROM jt_members_external_contacts WHERE j_user_id = $user_id AND contact_email = $to;"; 

    $result = mysql_query($query) or die(mysql_error()); 

    $conrows = mysql_num_rows($result); 

    if($conrows > 0) 
    { 

     echo "Exist"; 
    }else 
    { 


        // 

    //Insert News into Articles Database 
    $sql_insert = "INSERT into `jt_members_external_contacts` 
       (`j_user_id`,`contact_email`,`firstname` 
       ) 
       VALUES 
       ('$user_id','$to','$name' 
       ) 
       "; 

    mysql_query($sql_insert) or die(header("Location: /error_page?error_msg=1")); 
       } 

答えて

0

この行を置き換える:

をこれで
$query = "SELECT j_user_id FROM jt_members_external_contacts WHERE j_user_id = $user_id AND contact_email = $to;"; 

$query = "SELECT j_user_id FROM jt_members_external_contacts WHERE j_user_id = $user_id AND contact_email = '$to'"; 
+0

WORKEDありがとう。本当にそれはなぜですか?なぜクエリはそれを見ていないのですか? –

+0

「$ to」の前後に引用符がありませんでした。文字列の場合は常に引用符を使用してください。また、クエリの最後にはセミコロンを使用しないでください。 –

+0

しかし、私は$ user_idでそれを使用しませんでした... pls違いは何ですか? –

0

$toの前後に引用符があるはずです:

$query = "SELECT j_user_id FROM jt_members_external_contacts WHERE j_user_id = $user_id AND contact_email = '$to';"; 

ところで、これが実際のソースコードであれば、特別に細工されたリクエストパラメータがデータベースを侵害する可能性がある深刻なSQLインジェクションの脆弱性が存在するため、ユーザ入力$_REQUEST['emails'];を正しくエスケープすることを忘れないようにしてください。例えば

foreach ($emails as $to) { 
    list($to,$name) = split(':::',$to,2); 
    $to = mysql_escape_string($to); 
    ... 

また、これは、スクリプトを壊すtim.o'[email protected]などの有効な電子メールアドレスを防ぐことができます。

関連する問題