这对我不起作用,我在这项工作中一直使用插入和其他所有sql语句,但由于某些原因,这不起作用。
下表的结构如下。
**passenger_journey**
j_id user_id
142 1
142 14
首先,我要做的是插入登录用户ID,即$ user_id和旅程ID,即$ id。你工作的是变量设置。
我认为可能的问题可能是$ id,因为我是使用GET方法从url获取的。
<?php
$insert_passenger = "INSERT INTO `passenger_journey` VALUES ('" . mysql_real_escape_string($id) ."','" . mysql_real_escape_string($user_id) . "')";
if (isset($_POST['submit'])){
mysql_query($insert_passenger);
}
?>
<form method="POST">
<br/>Add yourself to this journey!<br/>
<input type ="submit" value="Sign up for this Journey"/>
</form>
这让我疯了几个小时,任何帮助都会很棒。
答案 0 :(得分:1)
这不匹配:
<form method="POST">
<br/>Add yourself to this journey!<br/>
<input type ="submit" value="Sign up for this Journey"/>
</form>
和
if (isset($_POST['submit'])){
mysql_query($insert_passenger);
}
您需要为提交按钮指定一个名称,以使该if语句为真:
<input type="submit" name="submit" value="Sign up for this Journey"/>
...并且您需要将这些变量传递到表单的操作中,以便能够在$ _GET超全局中使用它们。
<?php
$your_id = // define your id here, I assume in your insert query this should just be null.
$user_id = // define your user id here however you're getting it... sessions...?
?>
<form method="POST" action="?id=<?=$your_id?>&user_id=<?=$user_id?>">
注意:如果您的id
和user_id
变量来自会话,Cookie等,或者可以在执行插入的脚本中检索到的任何内容,肯定在那里进行操作,而不是在不需要时将其传递给HTML表单。
通常在使用MySQL插入数据时,相关的id
列将设置为auto_increment
,您要么不传递值,要么传入null,这样您就让它分配自己的价值。你可能应该在这里这样做(虽然我根本不知道你的情况):
$insert_passenger = "INSERT INTO `passenger_journey` VALUES (null,'" . mysql_real_escape_string($_GET['user_id']) . "')";
附注:不仅mysql*
被弃用会导致您遇到麻烦,但此脚本容易受到SQL注入和XSS攻击。
文档/更多信息: