2012-11-22 1 views
0

그래서, TAFE에서 사이트 (템플릿 및 주어진 링크/데이터베이스에서)를 만들고있어 데이터베이스를 편집 할 수 없습니다. 내가 할,데이터베이스에서 at 기호 (@)를 사용하여

mysql_select_db($database_sim6a2010, $sim6a2010); 
$query_Recordset1 = "SELECT * FROM employeeproject WHERE projectID=" . $_GET['projectID']; 
$Recordset1 = mysql_query($query_Recordset1, $sim6a2010) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 

mysql_select_db($database_sim6a2010, $sim6a2010); 
$query_Recordset2 = "SELECT * FROM project WHERE projectID=" . $_GET['projectID']; 
$Recordset2 = mysql_query($query_Recordset2, $sim6a2010) or die(mysql_error()); 
$row_Recordset2 = mysql_fetch_assoc($Recordset2); 
$totalRows_Recordset2 = mysql_num_rows($Recordset2); 

mysql_select_db($database_sim6a2010, $sim6a2010); 
$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email=" . $row_Recordset1["email"]; 
$Recordset3 = mysql_query($query_Recordset3, $sim6a2010) or die(mysql_error()); 
$row_Recordset3 = mysql_fetch_assoc($Recordset3); 
$totalRows_Recordset3 = mysql_num_rows($Recordset3); 

내가 여기에 지적거야 :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@com.au' at line 1 

내 코드는 : 내 페이지를로드 할 때 됐건, 나는 '@'기호 근처에 아무것도 구문 오류 mysql을 사용하는 것과는 달리,이 포럼에서 사용하지 말라고 들었습니다. (그리고 나는하지 않을 것입니다.) 그러나 이것은 우리가 함께 작업하고 사용해야하는 것입니다. Dreamweaver의 거대한 "Chuck pointless code"가 마음에 들지 않지만 Dreamweaver의 레코드 세트 및 GUI를 사용해야한다고 들었습니다. 오류를 받고있는 부분은 그래서

됐건, :

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email=" . $row_Recordset1["email"]; 

당신이 생각하는 것처럼, "샘 @ co.kr에서"물건 같은 물건으로 가득 그것의 이메일 부분,이 원인입니다 오류, PHP에서 데이터베이스의 @ sybmols가 코드 비트가 아니라는 것을 어떻게 알 수 있습니까?

희망 정보를 충분히 제공했습니다. 나는 at 기호 (@)와 관련된 검색이 항상 코드로 사용하기 때문에 물어보기로 마음 먹었다.

+0

에 있지만

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE employee.email='" . $row_Recordset1["email"] . "'"; 

당신은 매개 변수화 쿼리를 사용해야합니다. 이렇게하면 여기에있는 문제를 해결할 수 있으며 SQL 주입으로부터 보호 할 수 있습니다. http://bobby-tables.com/php.html에 예제가 있습니다. 또한, mysql_ 함수는 더 이상 사용되지 않으며 더 이상 사용되어서는 안된다. –

답변

1

당신은 다음과 같이 작은 따옴표로 문자열 데이터를 입력해야합니다

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email='" . $row_Recordset1["email"] . "'"; 
+0

나는 이것을 바로 시도했지만 에러로 "Column 'email'where where clause가 모호하다"를 찾았습니다. – DBeslan

+1

@DBeslan 어느 테이블에서'email'과 일치시키고 싶습니까? 'email.'에'employee.email'과 같은 테이블 이름 접두사를 붙입니다. 또한 더 큰 문제는 두 테이블에서 선택하는 것이지만 쿼리에 연결하는 것이 아무것도 없다는 것입니다. –

1

당신은이 문자열을 때문에 $row_Recordset1["email"]에 따옴표를 추가 할 필요가

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email='" . $row_Recordset1["email"]."'"; 

참고 :

돈 mysql_ * 함수를 사용하지 않는다. 더 이상 지원 중단 될 예정입니다. PDO 또는 mysqli 함수를 사용하십시오.

SQL Injection 코드가 취약한 것처럼 보입니다.

+0

나는 이것을 시도했지만 "Column 'email'where 절이 모호하다"를 오류로 보았다. – DBeslan

0

문제 번호 1은 @G-Nugget@Muthu Kumaran으로 처리 - 은 작은 따옴표로 묶습니다. ''.

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee, employeeproject WHERE email='" . $row_Recordset1["email"] . "'"; 

문제 # 2 - "where 절에 'Column'전자 메일이 모호합니다." employee & employeeproject의 필드를 가져 오는 중, email의 테이블을 지정하지 않았습니다. 이 쿼리를 할 수있는 더 좋은 방법이 JOIN

$query_Recordset3 = "SELECT employee.name, employeeproject.hours, employee.imgLocation FROM employee LEFT JOIN employeeproject ON employee.name=employeeproject.name WHERE employee.email='" . $row_Recordset1["email"] . "'";