2013-09-29 2 views
-1

레코드가 테이블에 삽입 될 때마다 다음 PHP 코드를 사용하여 전자 메일을 보내고 있습니다.데이터베이스에서 이메일 주소를 동적으로 선택하는 방법은 무엇입니까?

<?php 
    $latitude = $_GET['latitude']; 
    $longitude = $_GET['longitude']; 
    $uid = $_GET['uid']; 
    $type = $_GET['type']; 
    $server = "itp.db.8307610.hostedresource.com"; 
    $username = "abc"; 
    $password = "xyz"; 
    $database = "abc"; 
    $query = "INSERT INTO gps (latitude, longitude, uid, type) VALUES ($latitude, $longitude, $uid, '$type')"; 
    $query1 = "SELECT email FROM musers WHERE uid = $uid";  
    $result = mysqli_query($link,$query1) or die("query error".mysqli_error()); 
    $email = mysqli_fetch_array($result, MYSQLI_ASSOC); 
    @mail("$email","New record added","A new record has been added,"From: [email protected]"); 
    $link = mysqli_connect($server, $username, $password) or die ("error connecting to database"); 
    mysqli_select_db($database, $link); 
    mysqli_query($query, $link) or die("query error"); 
    mysqli_query($query1, $link) or die("query error"); 
    mysqli_close($link); 
    echo "SUCCESS\n"; 
?> 

문제없이 작동합니다. 전자 메일 ID를 하드 코딩했습니다.
다음 검색어를 기반으로 musers 테이블의 이메일을 어떻게 동적으로 추가 할 수 있습니까?

select email from musers where uid = $uid; 

편집 : 내가 변경 한 후 다음과 같은 오류를 얻고있다.

경고 : mysqli_query()가 파라미터 1 널 라인 /home/content/i/t/p/itp/html/data/email.php에 주어진 mysqli 것으로 예상 12

경고 : mysqli_error()는 기대하고 정확하게 제공하고 있습니다

+2

mysql_ * 함수는 PHP 5.5에서 더 이상 사용되지 않습니다 (http://stackoverflow.com/questions/13944956/the-mysql-extension-is-deprecated-and-will-be-removed-in-the- 미래에 대한 자세한 내용은 mysqli를 참조하십시오). mysqli 나 pdo를 사용해보십시오. – Femaref

+1

이미 'musers' 테이블에서'email' 값을 선택하고있는 것 같습니다. 여러분은 그것을 사용하지 않고있는 것입니다. 값을 선택하고 선택한 값을 사용하면'mail()'호출을로 이동하십시오. – David

+1

이 코드에는 SQL 삽입 취약점이 있습니다. 모든 '$ _GET'값을 이스케이프 처리해야합니다. – halfer

답변

1

라인 (12) 쿼리 오류에 /home/content/i/t/p/itp/html/data/email.php에 주어진 1 개 매개 변수 0 문제 :

1 ° 데이터베이스에 연결하기 전에 쿼리를 수행하려고합니다.

2 당신은 제대로 ...

이 수정 시도하여 문자열을 폐쇄하지 않는 ° :

<?php 
    $latitude = $_GET['latitude']; 
    $longitude = $_GET['longitude']; 
    $uid = $_GET['uid']; 
    $type = $_GET['type']; 
    $server = "itp.db.8307610.hostedresource.com"; 
    $username = "abc"; 
    $password = "xyz"; 
    $database = "abc"; 
    $link = mysqli_connect($server, $username, $password) or die ("error connecting to database"); 
    mysqli_select_db($database, $link); 
    $query = "INSERT INTO gps (latitude, longitude, uid, type) VALUES ($latitude, $longitude, $uid, '$type')"; 
    $query1 = "SELECT email FROM musers WHERE uid = $uid";  
    $insert = mysqli_query($link,$query) or die("query error".mysqli_error()); 
    $result = mysqli_query($link,$query1) or die("query error".mysqli_error()); 
    $email = mysqli_fetch_assoc($result); 
    @mail($email['email'],"New record added","A new record has been added","From: [email protected]"); 
    mysqli_close($link); 
    echo "SUCCESS\n"; 
?> 

을하지만, 일부는 이미 언급 한대로 : 당신의 문을 준비하거나 입력을 탈출 ...

+0

마티 감사합니다. 매력처럼 작동합니다! – user2067337

1
$result = mysqli_query($link,$query1) or die("query error".mysqli_error()); 
$email = mysqli_fetch_array($result, MYSQLI_ASSOC); 
mail($email['email'],"[email protected]","message"); 
+0

Mubin에게 감사드립니다. 그에 따라 변경했습니다. 코드를 지금 확인하십시오. 나는 오류가 발생합니다. – user2067337

+0

어떤 오류가 있습니까? – Mubin

관련 문제