2011-03-07 4 views
7

변수가 존재하면 INSERT INTO MySQLi prepared statement에 params를 바인드하려고합니다. 그렇지 않으면 null을 삽입하십시오.PHP bind_params with null

이 내가 가지고있는,하지만 작동하지 않습니다 :

if (!empty($name)) { 
    $result->bind_param('ss', $name, $url_friendly_name); 
} else { 
    $result->bind_param('ss', null, null); 
} 

if (!empty($description)) { 
    $result->bind_param('s', $description); 
} else { 
    $result->bind_param('s', null); 
} 

사람이이 일을 더 좋은 방법을 알고 있습니까 또는 내 코드가 단지 사소한 문제입니다. 나는 준비된 진술의 각 변수에 대해 위의 것을하고있다.

+0

빈 문자열을 사용할 수 있습니까? 예 : ''''? – alex

+0

필드가 비어있는 경우 쿼리를 필드 밖으로 나가려고합니까? –

+0

@ tandu 예. 내가 들판을 나갈 수 있다면, 그것은 또한 일이 될 것입니다. 더 좋은 방법이 있습니까? – ATLChris

답변

4

bind_param 참고로 작동합니다. 즉, 변수를 취한 다음 해당 변수의 값을 execute에 사용합니다.

null은 변수가 아닙니다.

변수를 null으로 설정 한 다음 해당 변수를 바인딩하십시오.

(또한 execute 방법은 간단한 배열이 소요되며 mysqli의 이상한 결합 방법을 우회 할 수있는 대신 mysqli의 PDO를 사용하는 것이 좋습니다.)

1

때문에, 두 번 bind_param 사용할 수 없습니다 명심 마지막 명령문이 첫 번째 명령문을 대체합니다. bind_param을 한 번만 사용하는 방법을 찾으십시오.