2015-11-11 3 views
0

Я пытаюсь закодировать для загрузки данных из формы плюс загрузка файла на путь сервера с использованием PHP. В этом я могу достичь функциональности загрузки файлов и данных, но в этом я хотел добавить еще одну функцию, где, если электронная почта уже существует, следует предупредить, что «электронная почта уже существует», и должен быть принят pnly pdf-файл. Я пробовал кодирование, но оно не работает.Загрузить форму в базу данных с помощью PHP

Может ли любой гуру добавить кодовый блок к приведенному ниже коду для достижения функциональности уникального идентификатора электронной почты и ограничить тип файла только pdf.

<?php 
include_once 'dbconfig.php'; 
if(isset($_POST['btn-upload'])) 
{  
    $name = trim($_POST["uname"]); 
    $email = trim($_POST["uemail"]); 
    $exp = trim($_POST["uexp"]); 
    $desig = trim($_POST["udesig"]); 
    $tech = trim($_POST["utech"]); 


    $file = rand(1000,100000)."-".$_FILES['file']['name']; 
    $file_loc = $_FILES['file']['tmp_name']; 
    $file_size = $_FILES['file']['size']; 
    $file_type = $_FILES['file']['type']; 
    $folder="uploads/"; 

    // new file size in KB 
    $new_size = $file_size/1024; 
    // new file size in KB 

    // make file name in lower case 
    $new_file_name = strtolower($file); 
    // make file name in lower case 

    $final_file=str_replace(' ','-',$new_file_name);  

    if(move_uploaded_file($file_loc,$folder.$final_file)) 

    { 

     $sql="INSERT INTO tbl_uploads(name,email,exp,desig,tech,file,type,size) VALUES('$name','$email','$exp','$desig','$tech','$final_file','$file_type','$new_size')"; 
     mysql_query($sql); 
     ?> 
     <script> 

     window.location.href='success.php'; 
     </script> 
     <?php 
    } 
    else 
    { 
     ?> 
     <script> 
     alert('error while uploading file'); 
     window.location.href='index.php?fail'; 
     </script> 
     <?php 
    } 
} 

?> 
+0

Убедитесь в том, чтобы сделать электронную почту либо первичный ключ в таблице БД или дать ему 'уникальный 'ограничение в схеме таблицы, а не просто попытаться применить это через php. – developerwjk

+0

У меня уже есть серийный номер как первичное и уникальное ограничение. Следовательно, пыталась обеспечить соблюдение php – Ranjit

ответ

0

Попробуйте изменить свой код

$sql = "SELECT COUNT(*) AS count from tbl_uploads where email = :email_id"; 
try { 
    $stmt = $DB->prepare($sql); 
    $stmt->bindValue(":email_id", $email, PDO::PARAM_STR); 
    $stmt->execute(); 
    //only grabbing one row so use fetch instead of fetchAll 
    $result = $stmt->fetch(PDO::FETCH_ASSOC); 

    /* 
    *check if result is an array 
    *check is count exists in the array 
    * check if result['count'] gt 0 
    */ 
    if (is_array($result) && array_key_exists('count', $result) && $result["count"] > 0) { 
     $msg = "Email already exist"; 
     $msgType = "warning"; 
    } 
0

Есть много способов для подсчета числа строк, в вашем случае изменение к:

$stmt->execute(); 
$result = $stmt->fetchAll(); 
if (count($result) > 0) { 
    $msg = "Email already exist"; 
    $msgType = "warning"; 
} 

или с помощью fetch()

$stmt->execute(); 
if ($stmt->fetch()) { 
    $msg = "Email already exist"; 
    $msgType = "warning"; 
} 

или без выборки:

$stmt->execute(); 
if ($stmt->rowCount() > 0) { 
    $msg = "Email already exist"; 
    $msgType = "warning"; 
} 

или так PHP свободно напечатал, возможно, вам просто нужно, чтобы бросить его в целое число:

if ((int)$result[0]["count"] > 0) 
Смежные вопросы