0

我似乎在这个问题上遇到了很多麻烦,所以如果有人可以帮助我,我会非常感激。

我现在正在学习编程(请记住早期阶段),我正在自己制作这个迷你应用程序来教我不同的东西。我有一个 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 语句回显“它可以工作”,这意味着用户已登录并且详细信息仍然存在在数组中:

<?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 语句:

  • 将名称、描述和 restaurantid 插入到交易表中,其中 restaurantid 来自餐厅表,可以通过从会话变量中查找哪个用户名与餐厅表中的用户名相同来获得。

从那以后,我就可以将交易提交到插入,因为我会从另一张桌子上获得餐厅 ID!

我希望这是有道理的,我已经做了很多年了,但无济于事!如果向我展示了这一点,我将能够进入许多其他领域,例如修改和删除等,这只是我需要首先弄清楚会话部分。非常感谢您的帮助!!!

4

1 回答 1

0

无需使用真实代码,只需尝试了解您:

$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'];
}
于 2013-02-16T17:29:42.490 回答