使用请求和会话插入语句

时间:2014-01-17 20:05:44

标签: php mysql database insert

由于某些原因我似乎无法获取数据插入php和mysql。

我有init.php的连接字符串,order.ph个p文件,最后是band_list.php。 我在将数据输入数据库时​​遇到了一些问题。

数据库有3个表:

order it has id, order_id and band_id columns

users it has id, name and password columns

bands it has Band_id, name and stock columns

band_list.php中有一个乐队演出详情,向用户显示。

    <?php
require 'core/init.php';
    $Band_id = $_GET['id'];
    $result = mysql_query("SELECT * FROM bands WHERE Band_id = $Band_id");

    echo "<table border = '1'>
    <tr>
        <th>Band Name</th>
        <th>Venue</th>
        <th>Category</th>
        <th>Stock</th>
        <th>Add</th>
    </tr>";

     while($row = mysql_fetch_array($result))
        {
            echo "<tr><form name=\"myform\" action=\" order.php\"  method=\"post\">";
           echo "<td> <input name=\"band\" type=\"hidden\" value=\"". $Band_id."\" ></td>";
            echo "<td>" .$row['Name']. "</td>";
            echo "<td>" .$row['Venue']. "</td>";
            echo "<td>" .$row['Category']. "</td>";
            echo "<td>" .$row['Stock']. "</td>";
            echo "<td><button>Buy Ticket</button></td>";
            echo "<td><input type=\" submit\" value=\"Buy Ticket\"></td>";
            echo "</tr> </form>";
        }

    echo "</table>";


    ?>

order.php具有用于将数据发送到数据库的查询

    <?php
require 'core/init.php';

session_start();
$Band_id = $_REQUEST['Band_id'];
$user_id = $_SESSION['user_id'];

  $sql = "INSERT INTO orders (band_id,user_id) VALUES($Band_id,$user_id)";
mysql_query ($sql, $linkme)
    or die ("could not add to database");
?>

,连接字符串位于init文件中。

所以我们的想法是,当用户点击买入票时,它会获得当前的Band_iduser_id,然后将它们插入到数据库table orders中的列band_id和{{} 1}}。

这不是讨厌我只是让我的或user_id字符串出现。

我的方式有问题吗?

1 个答案:

答案 0 :(得分:1)

<input name=\"band\" type=\"hidden\" value=\"". $Band_id."\" >

你正试图获得POST变量“Band_id”(它不存在)

$Band_id = $_REQUEST['Band_id'];

应该是

$Band_id = mysql_real_escape_string($_REQUEST['band']);

其他细节:

  1. 在order.php中,最好将“session_start()”放在 开始(在任何事情之前)
  2. 考虑使用mysqli或PDO而不是弃用的mysql
  3. 你可以用$ _POST而不是$ _REQUEST获得乐队ID,因为你的 表单用post方法发送它