Im在驗證數組中的值時檢查數組中的值是否存在困難,並檢查列中是否已存在值,如果沒有重複值應該添加到數據庫中,每個值都添加到相應的列中。檢查數組中的值是否已經存在於數據庫中+將數組添加到數據庫中
我已經嘗試了很多東西,最近我得到的是檢查數組中的一個值是否已經存在於表的1列中。該腳本應檢查1個表中5列中的重複項。
這是我媒體鏈接已經寫了:
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的回答幫助下,我設法將數組值添加到數據庫中,我也設法驗證數組中的每個值。如果數組中的某個值不是emailadres,則不會插入數據庫,否則數組中的值將插入到數據庫中。剩下的問題是我不知道如何檢查表中的重複項。該表有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();
}
}
}
旁註:使用'
'而不是''很多人犯了這個錯誤。 –
是的,我看到了,謝謝! – Avuerro
我將添加代碼來檢查重複項目:-)我會發布另一條評論,當我添加並檢查碼。如果您發現它有用,請記得稍後再接受該答案。 –