簡體   English   中英

使用php將表單數據輸入Mysql數據庫

[英]Inputting form data into Mysql database using php

我是MySQL的新手。 我正在嘗試創建一個php腳本,該腳本從html表單讀取數據並將其存儲到數據庫中。 我還上傳了一個圖像,其路徑保存在數據庫中,圖像本身存儲在c:wamp / www / uploads中。 現在,在提交表單后在wamp服務器上運行腳本時,我得到的是空白頁。 當我檢查我的上載文件夾時,它仍然是空的。 因此圖像不會放入文件夾中。 有人可以調試嗎?

<?php

define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'userdatadelta');

$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);

$table= "CREATE TABLE `users` 
        (  `rollno` int(15) NOT NULL,
           `name` varchar(50) NOT NULL,
           `email` varchar(50) NOT NULL,  
           `password` varchar(50) NOT NULL,  
           `imageid` varchar(50) NOT NULL,  
            PRIMARY KEY (`uid`),  
            UNIQUE KEY `username` (`email`))";

mysqli_query($db,$table);

if(isset($_POST["submit"]))
{
$name = $_POST["name"];
$roll_number = $_POST["rollno"];
$department = $_POST["department"];
$year = $_POST["year"];
$email = $_POST["email"];
$password = $_POST["password"];
$filename=$_FILES['userpic']['name'];
$filetype=$_FILES['userpic']['type']; 

$name = mysqli_real_escape_string($db, $name);
$roll_number = mysqli_real_escape_string($db, $roll_number);
$department = mysqli_real_escape_string($db, $department);
$year = mysqli_real_escape_string($db, $year);
$email = mysqli_real_escape_string($db, $email);
$password = mysqli_real_escape_string($db, $password);
$password = md5($password);

$newfilename= $roll_number;

if($filetype=='image/jpeg' or $filetype=='image/png' or $filetype=='image/gif')
 {
move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$newfilename);
$filepath="upload/".$newfilename;
 }


$sql = "SELECT email FROM users WHERE email='$email'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);

if(mysqli_num_rows($result) == 1)
{
 echo "An account has been created with this email ID already. We regret the inconvenience";
}
else
{
  $query = mysqli_query($db, "INSERT INTO users (name, rollno, department, year, email, password, imagepath)VALUES ( '$name','$roll_number', $department, $year,'$email', '$password', '$filepath')");

  if($query)
   {
    echo "Thank You! You have completed registration and are now registered.";
   }
}
}
?>

編輯后的代碼在大多數情況下有效,但可用於插入數據:(。2條注釋“已經使用此電子郵件ID創建了一個帳戶。給您帶來不便,我們深表歉意。”和“謝謝!您已完成注冊,現已注冊。”似乎不起作用。

<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

$DB_SERVER="localhost";
$DB_USERNAME="root";
$DB_PASSWORD="";
$DB_DATABASE="userdatadelta";

$db = mysqli_connect( "$DB_SERVER" ,"$DB_USERNAME","$DB_PASSWORD","$DB_DATABASE")or die("Cannot connect");

echo "Got connected?";

if(isset($_POST["submit"]))
{
echo "Got inside isset!";
$name = $_POST["name"];
$roll_number = $_POST["rollno"];
$department = $_POST["department"];
$year = $_POST["year"];
$email = $_POST["email"];
$password = $_POST["password"];
$filename=$_FILES['userpic']['name'];
$filetype=$_FILES['userpic']['type']; 

$name = mysqli_real_escape_string($db, $name);
$roll_number = mysqli_real_escape_string($db, $roll_number);
$department = mysqli_real_escape_string($db, $department);
$year = mysqli_real_escape_string($db, $year);
$email = mysqli_real_escape_string($db, $email);
$password = mysqli_real_escape_string($db, $password);
$password = md5($password);

$newfilename= $roll_number;

if($filetype=='image/jpeg' or $filetype=='image/png' or $filetype=='image/gif')
 {
echo "Got inside file type checking!";
move_uploaded_file($_FILES['userpic']['tmp_name'],'upload/'.$newfilename);
$filepath="upload/".$newfilename;
 }


$sql = "SELECT email FROM users WHERE email='$email'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);

if(mysqli_num_rows($result) == 1)
{
 echo "An account has been created with this email ID already. We regret the inconvenience";
}
else
{
  $query = mysqli_query($db, "INSERT INTO users (name, rollno, department, year, email, password, imagepath)VALUES ( '$name','$roll_number', $department, $year,'$email', '$password', '$filepath')");
  echo "Got inside else!";
  if($query)
   {
    echo "Thank You! You have completed registration and are now registered.";
   }
}
}
echo "Comment!";
?> 

這么長的代碼段很難確定可能的錯誤,因為空白頁可能是由多種原因引起的。

可能與您的代碼有關的一些典型問題:

  • 例如,PHP語法錯誤,例如大括號或多余的大括號( {} )。 您發布的文章似乎還可以,但是您沒有告訴您使用的是哪個PHP版本。

  • 上傳路徑的寫入權限被拒絕。 原因是權限錯誤,或者路徑錯誤。 您沒有指定操作系統,但是假定它是Windows。 某些系統使用不區分大小寫的路徑,另一些系統使用區分大小寫的路徑,請檢查當前系統的版本和配置。

  • 對於空白頁問題,即使沒有錯誤發生,也有一個執行順序,其中兩個echo調用均未觸發。

最終,PHP不會向用戶輸出任何錯誤,因為在生產環境中,PHP可能會帶來安全風險。

在您的開發環境中,可以啟用錯誤輸出以快速解決問題所在。

在第一個打開的 <?php子句之后立即添加以下行:

error_reporting(E_ALL);
ini_set("display_errors", 1);

現在,PHP抱怨的所有錯誤都應該輸出到瀏覽器。

請注意 ,這在生產環境中不是一個很好的習慣。 應該在日志文件中查找錯誤。 使用它可以幫助您在開發時間內調試並解決當前問題。 如果您正在從事大型項目,請考慮獲得PHP框架的幫助,以增強您的編碼體驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM