[英]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.