2015-02-11 277 views
0

我正在嘗試編寫一個程序,其中用戶將數據添加到數據庫中,而用戶的用戶名也是在沒有手動輸入的情況下輸入的。 這是PHP代碼如何將會話用戶名插入到mySql數據庫中

$user->createSession(array(
      'title' => Input::get('title'), 
      'start_date' => date('Y-m-d H:i:s', strtotime(Input::get('start_date'))), 
      'end_date' => date('Y-m-d H:i:s', strtotime(Input::get('end_date'))), 
      'passcode' => (Input::get('passcode')), 
      'username' => (Input::get('username')) 
     )); 

這是htlml

<form class="session" action="" method="POST" > 
    <div class="input-group"> 

<label for="title" ><span class="input-group-addon" id="basic-addon1">Title</span></label> 

<input type="text" id="username" name="title" class="form-control" value = "<?php echo escape(input::get('title')); ?>" placeholder="Title" autocomplete="on" required> 
    </div> 

<div id="datetimepicker" class="input-append date"> 
    <input type="text" name="start_date" placeholder="start date"></input> 

    <span class="add-on"> 
    <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> 
    </span> 
</div> 

<div id="datetimepicker1" class="input-append date"> 
    <input type="text" name="end_date" placeholder="end date"></input> 
    <span class="add-on"> 
    <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> 
    </span> 
</div> 

    <label for="passcode" class="input-group">Pass-code (optional)</label> 
    <input type="passcode" id="passcode" name="passcode" class="form-control" placeholder="Passcode" autocomplete="off" > 

    <br> 
    <input type = "hidden" name = "username" value = "<?php echo escape($user->data()->username); ?>"> 

<button class="btn btn-lg btn-primary" type="submit">Create</button> 

它添加到一切除了用戶名會話的數據庫。我不知道該怎麼做。我也試着刪除:

<input type = "hidden" name = "username" value = "<?php echo escape($user->data()->username); ?>"> 

,做:

$user->createSession(array(
     'title' => Input::get('title'), 
     'start_date' => date('Y-m-d H:i:s', strtotime(Input::get('start_date'))), 
     'end_date' => date('Y-m-d H:i:s', strtotime(Input::get('end_date'))), 
     'passcode' => (Input::get('passcode')), 
     'username' => $user->data()->username 
    )); 

這是因爲要求

session_start(); 

$GLOBALS['config'] = array(
    'mysql'  => array(
    'host'  => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'db' => 'coursework'), 
     //remember me 
    'remember' => array('cookie_name' => 'hash', 'cookie_expiry' => '604800'), 

'session' => array('session_name' => 'user', 'token_name' => 'token')); 

spl_autoload_register(function($class) { 
    require_once 'classes/'.$class.'.php'; 
}); 

編輯

此代碼插入數據到數據庫的數據庫代碼

public function createSession($fields = array()){ 
    if(!$this->_db->insert('sessions', $fields)){ 
     throw new Exception ("there was a problem adding a session"); 
    } 
} 

一切工作,數據庫連接工作和數據輸入到數據庫罰款,但用戶名字段爲空。正在創建的會話與主題類似。

連接到數據庫

function __construct() { 
    try { 
     $this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') .';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password')); 
     //echo 'connected'; 
    } catch (PDOException $e) { 
     die($e->getMessage()); 
    } 

} 
+1

你需要一些數據庫交互,這將是一個好的開始。連接不僅會自動發生,而且您還沒有做出任何努力。 – Jonast92 2015-02-11 14:05:16

+0

@ Jonast92我已經使用「require_once'core/init.php';」數據確實進入數據庫,會話變量不會。 – Love 2015-02-11 14:10:04

+2

顯示您的數據庫代碼,然後.. – 2015-02-11 14:12:47

回答

0

如何插入會話的用戶名到MySQL數據庫

  1. 您需要connect與您的配置信息的實際的數據庫,。

PDO爲這個漂亮:

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
  • 您需要insert到數據庫中,使用preferrably prepared statements
  • 有很多關於如何decent答案雖然我喜歡與prepared statement article混合起來wherea你應該執行數組變量到準備好的查詢。

  • 獲取會話信息
  • 你也許可以找出如何做到這一點。也許還有其他一些信息?

    $someValue = ""; // Just some random value. 
    $someSessionValue = ""; // Extract from session. Probably $_SESSION['stuff'] or similar. 
    
  • 最後,插入所提取的信息。
  • 像這樣的事情應該做的,拿上鍊接更好看或做一個適當的搜索:

    $sql = $dbh->prepare("INSERT INTO tablename(column1, column2) VALUES (?, ?)"); 
    $sql->execute(array($someValue, $someSessionValue)); 
    
  • 如果你想使這則自動發生您只需將其放入一個方法中,即可在觸發某個操作時自動調用代碼。
  • +0

    謝謝,您對從會話中提取的建議有所幫助。 – Love 2015-02-11 16:33:59

    +0

    @愛你不客氣。隨意在問題上勾選複選框標記,並通過一切手段提出一個新問題,如果在詳細說明此信息後卡住了。 – Jonast92 2015-02-12 10:39:56

    相關問題