2012-07-07 2 views
1

SQL 쿼리에서 "NULL"또는 "String"을 어떻게 전달할 수 있습니까? NULL과 (String로서) 'NULL'은 MySQL을위한 동일하지 않습니다 beacuseNULL 또는 mysql의 'string'insert-query string in PHP

, 예를 들어 (도시는 선택 사항이며 NULL은 MySQL을 사용할 수 있습니다)

<?php 
$var = !empty($_POST['city']) ? $_POST['city'] : NULL; 
$query = mysql_query("INSERT INTO table VALUES('".$_POST['firstname']."','".$var."')"); 
?> 

이 작동하지 않습니다.

+0

** 당신의 코드가 취약 ** 당신은 실제로 [준비된 명령문] (http://stackoverflow.com/a/60496/623041)을 사용해야하며, SQL에 대해 평가되지 않은 매개 변수로 변수를 전달합니다. 내가 무슨 말을하는지, 어떻게 고쳐야할지 모르겠다면, [Bobby Tables] (http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain)의 이야기를 읽으십시오. . – eggyal

+0

또한, [mysql_query()'] (http://php.net/manual/en/function.mysql-query.php) 함수에 대한 PHP 매뉴얼에 명시된 바와 같이 : *이 확장의 사용은 권장하지 않습니다. 대신 [MySQLi] (http://www.php.net/manual/en/book.mysqli.php) 또는 [PDO_MySQL] (http://www.php.net/manual/en/ref.pdo- mysql.php) 확장자가 사용되어야한다. [MySQL : API 선택] (http://www.php.net/manual/en/mysqlinfo.api.choosing.php) 가이드 및 [관련 FAQ] (http://www.php.net/manual 자세한 내용은 /en/faq.databases.php#faq.databases.mysql.deprecated를 참조하십시오. * – eggyal

답변

4

쿼리에서 따옴표로 NULL을 둘러싸고하지 마십시오 : 이제

$var = !empty($_POST['city']) ? ("'" . $_POST['city'] . "'") : 'NULL'; 
$query = mysql_query("INSERT INTO table VALUES('".$_POST['firstname']."',".$var.")"); 

, $_POST['city']를 지정하지 않은 경우 쿼리는 다음과 같이 표시됩니다

INSERT INTO table VALUES('nickb',NULL)