2014-05-16 3 views
0

나는 이와 같은 질문을 이미 알고 있지만, 내 코드가 무엇이 잘못된 것인지 알 수 없다. DB가 작동하고 이전에 코드에서 업데이트 쿼리를 실행합니다.왜 SQL 삽입 기능이 작동하지 않습니까?

쿼리 1 :

mysql_query("INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES ('".$login."', '".$ip."', '".$details->hostname."', '".$loc."', 'success', NOW()"); 

질의 2 : 여기

mysql_query("INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES ('".$login."', '".$ip."', '".$details->hostname."', '".$loc."', 'failure', NOW()"); 

는 요청에 따라 문자열의 에코입니다 : 당신이 최종 마감 ) 누락처럼

INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES ('AAL', '**.60.**.**', 'c-174-**-**-**.hsd1.**.comcast.net', 'Town, US', 'success', NOW() 
+1

당신은해야, 내가 것 (당신이 그들을 사용하여 시작하는 것이 고원 당신의 PHP 스크립트에 다른 변경해야합니다) 변수 중 하나가 비어있는 돈이어서 삽입 문을 망칠 수 있습니다. – Fluffeh

+2

준비 문! 당신은 그것을 후회하지 않을 것입니다 :) http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php –

+0

또한 phpmyadmin을 사용하여 반향을 테스트하는 것이 좋습니다 – AutomationNation

답변

1

이 보이는 . 또한 준비된 진술을 사용하십시오. 훨씬 더 깨끗하고 안전합니다. 여기에 준비된 문은 다음과 같은 형태가 될 것이다의 빠른 예입니다 (from here 적응) 당신의 SQL을 에코

$stmt = $mysqli->prepare("INSERT INTO `login_history` (`memberid`, `ip`, `host`, `location`, `status`, `date`) VALUES (?, ?, ?, ?, ?, NOW())") 
$stmt->bind_param('sssss', $login, $ip, $details->hostname, $loc, 'failure'); 
$stmt->execute() 
관련 문제