배열의 값을 검증하는 스크립트에 문제가있어 유효성 검사 후 값이 이미 열에 있는지 확인한 다음 복제본이없는 경우 값은 데이터베이스에, 각각은 해당 컬럼에 추가되어야합니다.배열의 값이 이미 데이터베이스에 존재하는지 확인 + 배열을 데이터베이스에 추가
나는 많은 것을 시도해 본 결과 가장 가까운 것은 배열의 한 값이 이미 테이블의 1 열에 있는지 확인하는 것입니다. 스크립트는 1 개의 테이블 중 5 개의 열에 중복이 있는지 확인해야합니다.
이
내가 allready 기입 한 것입니다 :foreach ($_POST['email'] as $value){
if(! filter_var($value, FILTER_VALIDATE_EMAIL))
{
echo "</br>" . $value;
echo "</br> email invalid</br>";
}
else {
try{
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
//foreach($_POST['email'] as $value){
//echo "</br> $value </br>";
$query = "SELECT * FROM uitnodigen WHERE email = :email " ;
$stmt = $DB->prepare($query);
$stmt->bindParam(':email', $value);
$blaa = $stmt->rowCount();
$stmt->execute();
}
catch (PDOException $exception){
printf($exception->getMessage());
}
echo "</br> </br> $value </br></br>";
echo " $blaa";
if($stmt->rowCount() > 0)
{ echo "email exists";
}
else {
echo "</br>ok </br>";
}
//}
}}
그리고 나는이 내가 데이터베이스에 내 배열을 추가하는 방법을 생각 :
$columns= implode(",", array_keys($_POST['email']));
$value= implode(",", array_values($_POST['email']));
echo "</br>$columns</br>";
echo "</br> $value </br>";
/*
foreach ($_POST['email'] as $value){*/
try{
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
$query="INSERT INTO `uitnodigen` (`0` , `1` , `2 `, `3 `, `4`) VALUES ($value)";
$stmt = $DB->prepare($query);
$stmt->execute();}
catch(PDOException $e){
echo $e;
}
나는 명확히하기 위해 더 많은 정보를 제공해야하는 경우 나에게 알리라고 생각해. 미리 감사드립니다.
Ryan의 답변 덕분에 배열 값을 데이터베이스에 추가 할 수 있었기 때문에 배열의 각 값의 유효성을 검사하기도했습니다. 배열의 값 중 하나가 전자 메일 주소가 아니면 데이터베이스에 삽입되지 않습니다. 그렇지 않으면 배열의 값이 데이터베이스에 삽입됩니다. 나머지 문제는 내가 테이블에서 중복을 확인하는 방법을 모른다. 테이블에는 5 개의 열이 있으며 배열의 각 값에 대해 테이블에 중복이 있는지 여부를 확인해야합니다. 임 솔루션을 찾으려면, 어떤 도움이나 올바른 방향으로 밀어 크게 주시면 감사하겠습니다. 내 코드 : $ i = 0; $ j = count ($ _ POST [ 'email']);
foreach ($_POST['email'] as $value){
$i++;
if(! filter_var($value, FILTER_VALIDATE_EMAIL))
{
echo "<br />email invalid<br />";
}
elseif($j==$i){
$emailQueryValues = array( ':email0' => $_POST['email']['0'],
':email1' => $_POST['email']['1'],
':email2' => $_POST['email']['2'],
':email3' => $_POST['email']['3'],
':email4' => $_POST['email']['4']);
echo "email klopt</br>";
$sql = 'insert into uitnodigen (`email0`, `email1`, `email2`, `email3`, `email4`) '
.' values (:email0, :email1, :email2, :email3, :email4)';
try{
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
$query = $DB->prepare($sql);
$query->execute($emailQueryValues);
}
catch(PDOException $e){
echo $e->getMessage();
}
}
}
Sidenote : ''대신에 '
'을 많이 사용하십시오. –
예, 고마워요! – Avuerro
중복을 곧 확인하기 위해 코드를 추가하겠습니다 :-) 내가 추가하고 체크 한 후 다른 댓글을 게시 할 것입니다. 암호. 유용하다고 생각되면 나중에 대답을 수락하는 것을 잊지 마십시오. –