2017-03-08 71 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好吧..明白了。当我尝试连接会话值并连接数据库时,它会以某种方式工作。但表单说明值是未定义的。这个问题已经解决了一半,非常感谢。我可以知道如何将未定义值保存一次吗? –