2013-04-14 4 views
0

$booked_num이 0이되어 SQL 대신 변수 값으로 쿼리를 시도했지만 정상적으로 작동했습니다. 하지만 내가 실수를 저지르고 있는지 모르겠다. 제발 도와주세요. 이미 모든 변수가 표시되고 모든 항목이 정상적으로 작동하지만 $booked_row에는 아무 것도없고 $booked_num에는 0이 표시됩니다.PHP 변수를 통해 MySQL 쿼리 선택

require_once 'mysql_connector.php'; 
$booked_result = mysql_query('select * from booked where train_no = ".$train_no." and date = ".$date." and st_from = ".$st_from." and st_to = ".$st_to.";') or die(mysql_error()) ; 
$booked_num = mysql_num_rows($booked_result); 
echo $booked_num; 
$booked_row = mysql_fetch_array($booked_result,MYSQL_ASSOC); 
print_r($booked_row); 
+0

작은 따옴표와 큰 따옴표를 섞어서 사용합니다. 작은 따옴표로 문자열을 시작하고 큰 따옴표로 끝낼 수 없습니다. – lanzz

+0

'mysql_ *'함수를 사용하지 않는 것이 좋습니다. PHP 5.5.0에서는 더 이상 사용되지 않습니다. [mysqli 또는 PDO] (http://www.php.net/manual/en/mysqlinfo.api.choosing.php)의 사용을 고려해야합니다. – jleft

답변

2
$booked_result = mysql_query('select * from booked where train_no = ".$train_no." and date = ".$date." and st_from = ".$st_from." and st_to = ".$st_to.";') or die(mysql_error()) ; 

이 구문이 올바르지 않습니다 - 당신이 변수을 연결하기 전에 문자열을 닫아야합니다. 같은 뭔가 :

$booked_result = mysql_query('select * from booked where train_no = "' .$train_no. '" and date = "' .$date. '" and st_from = "' .$st_from. '" and st_to = "' .$st_to. '";') or die(mysql_error()); 

또한, 당신은 PDO 라이브러리로 전환을 고려해야합니다. 무엇보다도 쿼리에서 SQL 삽입 공격을 피할 수 있습니다.

+0

감사합니다 @SamDufel !! 실제로 Railway Reservation (철도 예약) 프로젝트를 작성해야하며 지난 2 일 이래로 말 그대로 작업에 지쳤습니다. 아무도 제발 sql_query 및 PHP 스크립트에서 이러한 따옴표의 개념 나를 도울 수 있습니까? 다시 한번 감사드립니다! :) –

+1

@ code.atodi http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single 여기에서 문서를 읽으십시오. http : // www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double. 또한, ** mysql_ * 함수를 사용하지 말고, 더 이상 사용되지 않으며, mysqli_ * 또는 PDO를 사용하십시오. – Uby

+1

@ code.atodi - 문자열에 대한 PHP 매뉴얼 페이지에는 몇 가지 좋은 예제와 기능에 대한 전체 개요가 있습니다. http://php.net/manual/en/language.types.string.php 이해할 수없는 구체적인 내용이 있으면 그것에 대해 다른 질문을 게시 할 수 있습니다. 또한 구문 강조 표시가있는 편집기를 사용하는 것이 좋습니다. 잘못 입력하면 쉽게 볼 수 있습니다. –