0

我第一次做 PHP/mySQL 程序,可能需要一些建议。

我要创建的程序将按如下方式工作......如果出现问题,它将是您发​​送到服务器的表单。您希望能够自己填写表格。然后问题将显示在另一台计算机上。

我想我需要写入一个 mySQL 数据库,然后在将它们连接到我的数据库后从下一个计算机读取它。但是我如何以最好的方式做到这一点?

我已经成功下载了 XAMPP 并在 mySQL 中创建了一个表。还有我输入信息的字段和提交按钮。

我在以下位置收到错误:

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

注意:未定义索引:第 21 行 E:\xampp\htdocs\avvikelse.php 中的操作步骤

注意:未定义索引:第 22 行 E:\xampp\htdocs\avvikelse.php 中的问题详细信息

注意:未定义变量:第 25 行 E:\xampp\htdocs\avvikelse.php 中的 operation_step 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在第 1 行的“步骤,问题详细信息)VALUES ('', '',' 附近使用

// blabla, connetcting...

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

$sql = "INSERT INTO avvikelsekort (Operation step, Problem detail) VALUES
('$operation_step', '$problem_detail')";

if (!mysql_query($sql)) {
        die('Error: ' .mysql_error());
}

mysql_close();
?>

我现在按照你所说的做了 Marco,我得到了 Array(0) {} 我的表单看起来像这样

    <form action="avvikelse.php" method="POST" />
    <p>Operation step: <input type="text" name"Operation step" /></p>
    <p>Problem detail: <input type="text" name"Problem detail" /></p>    
    <input type="submit" value="Submit" />
    </form>
4

4 回答 4

2

如果您在字段名称中使用空格,则必须使用反引号。
更多,如果你调用变量

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

你的查询应该是

$sql = "INSERT INTO avvikelsekort (`Operation step`, `Problem detail`) VALUES
    ('$operationstep', '$problem_detail')";

而且,最后但并非最不重要的一点是,请记住您必须始终清理用户输入以避免 sql 注入!

已编辑
您的表格是错误的。尝试这个:

<form action="avvikelse.php" method="POST" />
    <p>Operation step: <input type="text" name="Operation step" /></p>
    <p>Problem detail: <input type="text" name="Problem detail" /></p>    
    <input type="submit" value="Submit" />
</form>
于 2012-07-11T07:25:14.673 回答
1

您的帖子/获取名称中不能有空格:

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

尝试

$operationstep = $_POST['Operation_step'];
$problem_detail = $_POST['Problem_detail'];

或在表格中重命名它们。

还:

$operationstep = $_POST['Operation step'];
$problem_detail = $_POST['Problem detail'];

与您正在执行的插入不匹配 - 请注意您在插入中使用的变量名称以及应如何引用带空格的列名:

$sql = "INSERT INTO avvikelsekort (`Operation step`, `Problem detail`) VALUES
('$operation_step', '$problem_detail')";
于 2012-07-11T07:26:30.780 回答
0

正如其他人所回答的那样,由于$_POST数组中不存在该值,您将收到一条未定义的索引消息。

我建议您在将$_POST数据放入变量之前对数据进行清理,因为任何发布的数据都可能包含某种形式的恶意数据,这些数据可能导致 SQL 注入攻击。您可以在以下位置查看其他安全开发实践:https ://www.owasp.org/index.php/OWASP_Guide_Project

于 2012-07-11T07:43:46.780 回答
0

您会注意到未定义的索引,因为该索引不存在于$_POST变量中。不要在索引中使用空格。编辑您的表单并在输入字段的名称属性中使用下划线,并$operation_step在查询中使用,$operationstep同时分配。并在查询中使用反引号作为表名。

于 2012-07-11T07:29:58.737 回答