sourcetip

mysql 데이터베이스에 배열 저장

fileupload 2023. 10. 15. 17:35
반응형

mysql 데이터베이스에 배열 저장

나는 전체 주문을 페이팔로 보내기 전에 추가 정보를 저장하고 싶습니다.각 항목에 대해 MySQL 데이터베이스에 저장할 열을 하나씩 만들었습니다.이제 PHP 페이지를 만들기 위해 나중에 읽을 수 있는 배열로 저장하려고 했습니다.추가 필드는 입력 양식 필드에서 가져옵니다.

배열을 사용하면 정보가 혼동되지 않도록 확실히 할 수 있습니까?

/를 사용하여 배열을 저장할 수 있습니다.unserialize이 솔루션을 사용하면 다른 프로그래밍 언어에서 쉽게 사용할 수 없으므로 / json_decode대신 /를 사용하는 것을 고려해 볼 수 있습니다.사용을 피함implode/explode버그나 보안상의 결함이 생길 수도 있기 때문입니다.

이렇게 하면 테이블이 정규화되지 않아 데이터를 쉽게 쿼리할 수 없으므로 좋지 않은 생각일 수 있습니다.따라서 앞으로 나가기 전에 이 점을 주의 깊게 고려해야 합니다.통계 자료를 조회할 필요가 있습니까, 아니면 다른 방법으로 자료를 조회할 필요가 있습니까?데이터를 정상화해야 하는 다른 이유가 있습니까?

또한 날것을 저장하지 않습니다.$_POST배열. 어떤 사람은 쉽게 자신의 웹 양식을 만들고 데이터를 사이트에 올릴 수 있으므로 공간을 많이 차지하는 매우 큰 양식을 보낼 수 있습니다.원하는 필드를 저장하고 데이터를 저장하기 전에 데이터의 유효성을 확인해야 합니다(잘못된 값을 얻지 않도록).

이와 같은 작업을 수행하는 방법은 배열을 직렬화하는 것인데, 이는 "열로 줄을 만드는 것"을 의미합니다.이 내용을 보다 잘 이해하려면 다음을 참조하십시오.

$array = array("my", "litte", "array", 2);

$serialized_array = serialize($array); 
$unserialized_array = unserialize($serialized_array); 

var_dump($serialized_array); // gives back a string, perfectly for db saving!
var_dump($unserialized_array); // gives back the array again

PHP 기능을 사용합니다.serialize()배열을 문자열로 변환합니다.이러한 문자열은 MySQL 데이터베이스에 쉽게 저장할 수 있습니다.사용.unserialize()필요한 경우 배열로 다시 변환할 수 있습니다.

PHP를 사용하여 배열(또는 객체)을 문자열로 변환하려면 serialize()를 호출합니다.

$array = array( 1, 2, 3 );
$string = serialize( $array );
echo $string;

$string은 이제 배열의 문자열 버전을 저장합니다.위 코드의 출력은 다음과 같습니다.

a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}

문자열에서 배열로 다시 변환하려면 unserialize():

// $array will contain ( 1, 2, 3 )
$array = unserialize( $string );
<?php
$myArray = new array('1', '2');
$seralizedArray = serialize($myArray);
?>

RDBMs 테이블에서 쉼표로 구분하여 다중 값 열에 저장합니다.

MySQL JSON datatype을 사용하여 배열을 저장할 수 있습니다.

mysql> CREATE TABLE t1 (jdoc JSON);

쿼리 확인, 영향을 받는 행 0개(0.20초)

mysql> INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');

쿼리 확인, 영향을 받는 행 1개(0.01초)

위의 객체를 PHP로 가져오려면

json_encode(["key1"=> "value1", "key2"=> "value2"]);

https://dev.mysql.com/doc/refman/8.0/en/json.html 에서 자세히 보기

언급URL : https://stackoverflow.com/questions/10686333/save-array-in-mysql-database

반응형