2011-01-15 4 views
0

Dies gibt einen Fehler. (Sie haben einen Fehler in der SQL-Syntax, das Handbuch überprüfen, die für die richtige Syntax zu Ihrer MySQL-Server-Version entspricht in der Nähe zu verwenden '@ myemail.net' at line 1)Kontaktfehler einfügen

$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")); 
       } 

Antwort

0

ersetzen Sie diese Zeile:

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

mit diesem:

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

GEARBEITET. Vielen Dank. Ernst warum war das? Warum hat die Abfrage das nicht gesehen? –

+0

Sie haben die Anführungszeichen um '$ zu' vermisst. Sie sollten immer Anführungszeichen verwenden, wenn es eine Zeichenfolge ist. Außerdem sollte am Ende der Abfrage kein Semikolon stehen. –

+0

Aber ich habe es nicht auf $ user_id ... pls verwendet, was ist der Unterschied wirklich? –

0

sollte Anführungszeichen gesetzt werden um $to:

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

Übrigens, wenn dies Ihr tatsächlicher Quellcode ist, vergessen Sie nicht, die Benutzereingabe $_REQUEST['emails']; ordnungsgemäß zu umgehen, da dieses Skript eine schwerwiegende SQL Injection-Schwachstelle aufweist, bei der ein speziell gestalteter Anforderungsparameter Ihre Datenbank kompromittieren kann .

Zum Beispiel:

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

Dies wird auch gültige E-Mail-Adressen wie tim.o'[email protected] brechen das Skript verhindern.

Verwandte Themen