【问题标题】:How to insert session username into mySql database如何将会话用户名插入 mySql 数据库
【发布时间】:2015-02-12 00:38:22
【问题描述】:

我正在尝试编写一个程序,其中用户将数据添加到数据库中,并且用户的用户名也无需手动输入即可。 这是php代码

$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'))
         ));

这是html

<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());
    }

}

【问题讨论】:

  • 您需要一些数据库交互,这将是一个好的开始。连接不会自动发生,您也没有表现出任何努力。
  • @Jonast92 我已经使用“require_once 'core/init.php';”连接到数据库数据确实进入数据库,会话变量没有。
  • 然后显示您的数据库代码..
  • 我们需要查看将数据插入数据库的代码,这意味着我们需要查看连接数据库并插入所需值的某种代码。您首先提供的只是与数据库的连接信息
  • 1.学习如何连接到数据库。 2.学习如何插入数据库。 3. 获取会话信息并插入。

标签: php html mysql session-variables


【解决方案1】:

如何将会话用户名插入到 mySql 数据库中

  1. 你需要connect到一个带有你的配置信息的实际数据库。

PDO 很适合这个:

 $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
  1. 您需要将insert 输入数据库,最好使用prepared statements

有很多关于如何decent 答案,尽管我喜欢将它与prepared statement article 混合在一起,您应该在准备好的查询中执行一组变量。

  1. 获取会话信息

您可能会想办法做到这一点。也许还有其他信息?

$someValue = ""; // Just some random value.
$someSessionValue = ""; // Extract from session. Probably $_SESSION['stuff'] or similar.
  1. 最后,插入提取的信息。

应该这样做,更好地查看链接或进行适当的搜索:

$sql = $dbh->prepare("INSERT INTO tablename(column1, column2) VALUES (?, ?)");
$sql->execute(array($someValue, $someSessionValue));
  1. 如果您希望自动执行此操作,则只需将其放入一个方法中,当触发某些操作时自动调用您的代码。

【讨论】:

  • 谢谢,您对从会话中提取的建议有所帮助。
  • @Love 不客气。随意勾选问题上的复选框标记,如果您在详细说明此信息后遇到困难,请务必提出一个新问题。
猜你喜欢
  • 2011-06-13
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
相关资源
最近更新 更多