2010-07-14 10 views
0

이 내 현재 함수입니다 :어떻게 단일 mysql 쿼리에 날짜 확인 기능을 통합합니까?

$result = $db->sql_query("SELECT * FROM data1,data2,data3,data4 WHERE person='" .$name. "'"); 

$row = $db->sql_fetchrow($result); 
$day = $row['regtime']; 
$days = (strtotime(date("Y-m-d")) - strtotime($row['regtime']))/(60 * 60 * 24); 
if($row > 0 && $days < 15){ 

$row = ['name']; 
$row = ['age']; 

//etc 

하지만 기능 이상을 두 번 regtime 연속으로 읽을 수 없습니다. 내가 뭘 찾고있는 하나의 쿼리에 모두 기능 클럽 수 있습니까 ?? 그렇다면 어떻게?

+0

사실 내 질문은 어떻게 그 mysql_query에 날짜 확인 기능을 포함 시켰습니까 ?? – mathew

답변

0

현재이 기능에는 하나의 쿼리 만 있습니다. 발췌문에 누락 된 것이 없으면 이중 쿼리가 없습니다. 두 번 $ row [ 'regtime']을 사용한다는 것은 배열 읽기이며 쿼리가 아닙니다.

1

결과 세트의 지난 15 일 동안의 행만 원한다고 말하고 있습니까?

data1-4 테이블을 조인하는 방법과 person 필드가 SQL 삽입에 개방되어 있지 않으므로 그 부분을 남겨 두지 만 아래에서 포함 된 레코드 만 필터링하는 방법이 포함되어 있습니다 지난 15 일 :

SELECT * 
    FROM data1 
    WHERE person = :name 
    AND regtime >= NOW() - INTERVAL 15 DAY 
+0

사실 내 질문에 어떻게 mysql_query에 날짜 확인 기능을 포함 시켰습니까 ?? 그리고 하나 더 어떻게 내가 SQL 주입을 방지합니까 ?? – mathew

+0

mysql_real_escape_string() 또는 준비된 명령문을 사용하여 SQL 삽입을 방지하십시오. – Naktibalda

+1

@mathew 하나는 쿼리에서 가능한 한 적은 함수를 사용해야합니다. 내가 맞다면, mysql의'NOW()'함수는 캐싱으로부터 쿼리를 막아 성능을 떨어 뜨릴 것이다. 둘째는 MySQL의에서 사용할 수있는 SQL 주입 방지 -는 mysql_real_escape_string를 그 같은 쿼리를 수행 를'데이터 1, 데이터 2, DATA3, DATA4 SELECT * FROM WHERE 사람 = ' "($ 이름) .mysql_real_escape_string."'' 을 또한 성능 소비를 위해 필요한 열을 선택하고 ** '*'**로 표시하지 않는 것이 좋습니다. – Eugene