2017-03-08 104 views
-3

我剛剛計劃創建一個程序,我需要使用DBHost,DBUser,DBPassword和DBName連接USER的數據庫,以將未來需要的值保存在MySQL服務器上。 對於這一點,我已經寫了這樣的代碼:

<?php session_start(); ?> 
 
<?php 
 

 
require('functions.php'); 
 
iq_add_style('DBConForm_Styles' , 'assets/scripts/css/iq_styles' , 'stylesheet' , 'css'); 
 

 
function IQ_DB_Form(){ 
 
    ?> 
 

 
    <form id="iq-dbconform" method="post" action="<?php $_SERVER['PHP_SELF'] ?>"> 
 
    <label>Server Host:&nbsp;<input type="text" maxlength="15" placeholder="localhost" name="host-name" /></label> 
 
    <label>Database User:&nbsp;<input type="text" maxlength="15" placeholder="root" name="user-name" /></label> 
 
    <label>Password:&nbsp;<input type="password" maxlength="15" placeholder="User Password" name="user-pass" /></label> 
 
    <label>Name of the Database:&nbsp;<input type="text" maxlength="20" placeholder="developing_house" name="db-name" /></label> 
 
    <input type="submit" value="Connect" name="dbconbtn" />&nbsp;<input type="reset" value="Reset" name="dbresetbtn" /> 
 
    </form> 
 

 
    <?php 
 
} 
 
IQ_DB_Form(); 
 

 
// Database connection 
 
$dbhost = $_POST['host-name']; 
 
$dbuser = $_POST['user-name']; 
 
$dbpass = $_POST['user-pass']; 
 
$dbname = $_POST['db-name']; 
 

 
$db_details = array(
 
    'host' => $dbhost, 
 
    'user' => $dbuser, 
 
    'password' => $dbpass, 
 
    'dbname' => $dbname, 
 
); 
 
$IQcon = mysqli_connect($db_details['host'],$db_details['user'],$db_details['password'],$db_details['dbname']); 
 

 

 

 
// Check connection 
 
if (mysqli_connect_errno()) 
 
    { 
 
    echo "Looks like an Error connecting IQubex Database: " . mysqli_connect_error(); 
 
    } 
 

 
// Store Values in Session 
 
foreach ($_POST as $key => $value) { 
 
    ${$key} = $value; 
 
    $_SESSION[$key] = $value; 
 
} 
 

 
echo $_SESSION['db-name']; 
 
echo $_SESSION['user-pass']; 
 
echo $_SESSION['user-name']; 
 

 
// Perform queries 
 
if ($IQcon){ 
 
mysqli_query($IQcon,"CREATE TABLE `Persons` (
 
    `FirstName` varchar(30) NOT NULL, 
 
    `LastName` varchar(60) NOT NULL, 
 
    `Age` int(255) NOT NULL, 
 
);"); 
 
mysqli_query($IQcon,"CREATE TABLE `MadBoys` (
 
    `FirstName` varchar(30) NOT NULL, 
 
    `LastName` varchar(60) NOT NULL, 
 
    `Age` int(255) NOT NULL, 
 
);"); 
 
mysqli_close($IQcon); 
 
} 
 
else{ 
 
    echo "There seems a problem with your server."; 
 
} 
 
?>

,這樣,當我寫echo $_SESSION['db-name'],印在插入數據庫的名字我已經在會話中保存數據庫配置表單值。但是當頁面重新加載,在頁面上再次返回時,或者類似的東西,所有的值都會被重置!因此,我不希望我的用戶一次又一次地連接數據庫。我希望它永久保存,以便我可以爲下一個程序步驟工作。

+0

還需要幫助嗎? –

+0

@MasivuyeCokile是的,我需要!但是這裏有很多我討厭的手續。 –

+0

你的意思是你討厭的手續是什麼? –

回答

0

您可以檢查值是否保存在會話中。如果他們不連接到數據庫否則得到的值,並將其保存在DB:

請參見下面的例子:

session_start(); 
if(isset($_SESSION['stored-in-db'])) 
{ 
    //USE SESSION VALUES 
} 
else 
{ 
$dbhost = $_POST['host-name']; 
$dbuser = $_POST['user-name']; 
$dbpass = $_POST['user-pass']; 
$dbname = $_POST['db-name']; 

$db_details = array(
    'host' => $dbhost, 
    'user' => $dbuser, 
    'password' => $dbpass, 
    'dbname' => $dbname, 
); 
    $IQcon = mysqli_connect($db_details['host'],$db_details['user'],$db_details['password'],$db_details['dbname']); 
    foreach ($_POST as $key => $value) 
    { 
     $_SESSION[$key] = $value; 
    } 
    $_SESSION['stored-in-db] = true; 
} 
+0

你有語法錯誤,你必須在頂部有'session_start();'使用會話的所有頁面 –

+0

'if(isset($ _ SESSION ['stored-in-db]))'非常錯誤..不要急於回答你想先解決的問題,儘可能多地獲取信息OP –

+0

更正了語法錯誤 –

0

嘗試添加

session_start(); 

在您的網頁,上面你正在使用會話。

+0

我實際上想在會話中永久保存這些值我不想開始任何會話,除非我得到這些變量保存。:-) –

+0

@KumarAbhirup當你使用會話時,你總是需要有'session_start()',否則你的會話將被取消 –

+0

@MasivuyeCokile好吧..明白了。當我嘗試連接會話值並連接數據庫時,它會以某種方式工作。但表單說明值是未定義的。這個問題已經解決了一半,非常感謝。我可以知道如何將未定義值保存一次嗎? –