programing

PHP/MySQL 삽입 null 값

muds 2023. 10. 28. 08:17
반응형

PHP/MySQL 삽입 null 값

저는 PHP/MySQL 코드 때문에 어려움을 겪고 있습니다.한 테이블에서 읽고 일부 필드를 변경한 다음 다른 테이블에 씁니다. 삽입할 경우 아무 일도 일어나지 않으며 데이터베이스에 null을 삽입할 때 배열 값 중 하나가 null입니다(필드에 null 값이 허용됨).이것은 약간 다음과 같습니다.

$results = mysql_query("select * from mytable");
while ($row = mysql_fetch_assoc($results) {
    mysql_query("insert into table2 (f1, f2) values ('{$row['string_field']}', {$row['null_field']});
}

모든 행에 null 값이 있는 것은 아니며 쿼리에는 null일 수도 있고 그렇지 않을 수도 있는 필드와 열이 2개 더 있습니다.

이것은 준비된 설명문을 사용하는 것이 정말로 여러분의 수고를 덜어줄 수 있는 한 가지 예입니다.

MySQL에서 null 값을 삽입하려면 다음 위치에서 null 값을 지정해야 합니다.INSERT추가 분기가 필요한 필드를 제외하거나 시간:

INSERT INTO table2 (f1, f2)
  VALUES ('String Value', NULL);

그러나 해당 필드에 값을 삽입하려면 이제 코드를 분기하여 작은 따옴표를 추가해야 합니다.

INSERT INTO table2 (f1, f2)
  VALUES ('String Value', 'String Value');

준비된 진술은 자동으로 수행됩니다.그들은 그들 사이의 차이를 알고 있습니다.string(0) ""그리고.null쿼리를 적절하게 작성합니다.

$stmt = $mysqli->prepare("INSERT INTO table2 (f1, f2) VALUES (?, ?)");
$stmt->bind_param('ss', $field1, $field2);

$field1 = "String Value";
$field2 = null;

$stmt->execute();

필드를 벗어나 매개 변수를 바인딩하는 것을 잊지 않도록 합니다.당신과 함께 있을 이유가 없습니다.mysql확장. 사용mysqli대신 진술서가 준비되어 있습니다.당신은 고통의 세계를 구할 것입니다.

제 생각에 당신은 당신의 주변에 인용문이 필요합니다.{$row['null_field']},그렇게'{$row['null_field']}'

따옴표가 없는 경우 다음과 같은 삽입문이 나타나는 경우가 있습니다.insert into table2 (f1, f2) values ('val1',)구문 오류입니다.

숫자 필드일 경우 위에서 몇 가지 테스트를 수행해야 하며 null_field에 값이 없으면 null로 명시적으로 설정합니다.

필드의 경우NULL수용 가능합니다, 당신은 사용할 수 있습니다.var_export($var, true)출력하다string,integer, 아니면NULL문자 그대로의출력은 자동으로 추가되거나 생략되므로 따옴표로 둘러싸지 않습니다.

예를 들어,

mysql_query("insert into table2 (f1, f2) values ('{$row['string_field']}', ".var_export($row['null_field'], true).")");

언급URL : https://stackoverflow.com/questions/5329542/php-mysql-insert-null-values

반응형