尝试使用查询变量和表单数据来更改数据库中的表

时间:2013-06-13 11:59:09

标签: php mysql variables

正如标题中所述,我正在尝试使用从页面指定的查询变量,该变量指向此页面以及来自此页面的表单数据来操作数据库。我似乎无法做到正确,我不知道我做错了什么。代码段如下所示:

<?php
$ware_number = $_GET['id'];

Echo    "<form action='usernamecheck.php' method='post'>";
Echo    'Username:<br>';
Echo    '<input type="text" name="usernamecheck" size="14"><br>';
Echo    'Password:<br>';
Echo    '<input type="password" name="passwordcheck" size="14"><br>';
Echo    '<input type="submit" value="Send">';
Echo    '</form>';

if (isset($_POST['usernamecheck'])) {

$sql2 = "SELECT * FROM `storedata`.`users` WHERE `username` LIKE '$_POST[usernamecheck]'";

$found_user_id = mysql_query($sql2, $conn);
print $found_user_id;
}

if (isset($_POST['usernamecheck'])) {

$sql3 = "INSERT INTO `storedata`.`basket` (user_id, ware_id, number, complete)
VALUES
('$found_user_id', '$ware_number', 1, 0)";

$derp = mysql_query($sql3, $conn);
print $derp;
}
?>

文档本身是usernamecheck.php,我只是打印试图找到错误。当我检查篮子表时,没有发生任何事情,即使没有显示错误。现在变量$ ware_number导致错误。我做错了什么?

我还在storedata.basket表中创建了user_id和ware_id外键,因为它们是各自表中的主键。这意味着它们只能是特定值,但我正在测试这些值,主要是1和0 ...

1 个答案:

答案 0 :(得分:0)

如果未设置$ _GET ['id']怎么办?它会失败。另请阅读PHP中正确使用SQL的信息。您的代码容易受到SQL注入攻击和诸如此类的攻击。

编辑: 更新的一段代码

if(isset$_GET['id'] && is_numeric($_GET['id']))
{

    $ware_number = $_GET['id'];

    Echo    "<form action='usernamecheck.php?id=" . $_GET['id'] . "' method='post'>";
.....