将输入的数据和会话ID插入数据库


Inserting inputted data and session ID into database

我似乎在这个问题上遇到了很多麻烦,所以如果有人能帮我,我真的很感激。

我现在正在学习编程(记住早期阶段),我自己制作这个迷你应用程序来教我不同的东西。我有一个HTML文件,它创建了一个表单,这样用户就可以在数据库中添加交易名称和交易描述

在表单中的2个文本框中输入的文本将被捕获,并将通过javascript函数创建一个JSON对象

然后,Javascript函数将被读取到创建的PHP文件中,该文件将接受JSON对象并将给定的值写入数据库,如下所示:

<?php
$var1 = $_REQUEST['action']; // We dont need action for this tutorial, but in a complex code you need a way to determine ajax action nature
$jsonObject = json_decode($_REQUEST['outputJSON']); // Decode JSON object into readable PHP object
$name = $jsonObject->{'name'}; // Get name from object
$desc = $jsonObject->{'desc'}; // Get desc from object

mysql_connect("localhost","root","");  // Conect to mysql, first parameter is location, second is mysql username and a third one is a mysql password
@mysql_select_db("findadeal") or die( "Unable to select database"); // Connect to database called test
$query = "INSERT INTO deal (dname, description, restaurantid) VALUES ('$name' ,'$desc' '$username') WHERE $username=(Select restaurantid FROM restaurant where username = '$username')";
$result=mysql_query($query);
$num = mysql_numrows($result);
if($num != 0) {
    echo "true";
} else {
    echo "false"; 
}
?>

这就是我的问题所在。这个可以添加交易的HTML文件是正在创建的更大项目的一部分。用户可能已经登录,并且已经创建了一个会话——我知道这是我插入HTML文件顶部的迷你php语句echos"It works",这意味着用户已经登录,详细信息仍在数组中:

<?php
if( !isset( $_SESSION ) ){
 session_start();
echo "Whats Happening";
    }
if( isset( $_SESSION['username'] ) ){
  /* User is logged in */
  echo "IT WORKS!";
    } ?>

我不能做的,需要帮助的是:

当交易数据被插入数据库时,它们被插入的字段包括:

  1. dealid是自动实现的,所以我不需要对此做任何事情
  2. dname,是用户在表单中插入信息的交易名称
  3. 用户再次将其信息插入表单的描述
  4. restaurantid,它是登录用户的id

我不知道如何从会话变量中获取restaurantid并将其包含在MYSQL语句中。

我知道下面PHP文件中的SQL语句是错误的,但我只是试着自己把它拼凑起来,看看是否可以为这个问题创建某种逻辑。

简单地说,我想做的是获取存储在会话变量中的用户名,然后创建一个sql语句:

  • 在deals表中插入restaurantid来自restaurant选项卡的名称、说明和restauranti,可以通过查找会话变量中的哪个用户名与restaurante表中的用户名相同来获得

从那以后,我就可以承诺插入这笔交易,因为我可以从另一张桌子上获得餐厅id!

我希望这是有道理的,我已经做了很长时间了,但没有成功!如果向我展示了这一点,我将能够进入许多其他领域,如修改和删除等,只是我需要先弄清楚会话内容。非常感谢您的帮助!!!

在不使用真实代码的情况下,只需尝试理解您:

$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS);
$sql = 'Select restaurantid FROM restaurant where username=:username';
$statement = $db->prepare($sql);
$statement->bindParam(':username', $_SESSION['username'], PDO::PARAM_STR);
$statement->execute();
$result = $statement->fetch(PDO::FETCH_ASSOC);
if(!empty($result)) {
    // here is your restaurant id, you can use for the insert statement...
    $rID = $result['restaurantid'];
}