读写mysql

时间:2012-07-11 07:22:56

标签: php mysql database

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

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

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

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

我收到错误:

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

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

     

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

     

注意:未定义的变量:operation_step in   第25行的E:\ xampp \ htdocs \ avvikelse.php错误:您输入了错误   你的SQL语法;查看与MySQL对应的手册   服务器版本,用于在“步骤,问题详细信息”附近使用正确的语法   价值观('','','在第1行

// 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 个答案:

答案 0 :(得分:2)

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

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

您的查询应该是

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

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

<强> EDITED
你的表格错了。试试这个:

<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>

答案 1 :(得分: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')";

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

我建议您在将$_POST数据放入变量之前清理数据,因为任何后期数据都可能包含某些形式的恶意数据,这些数据可能会导致SQL注入攻击。您可以在https://www.owasp.org/index.php/OWASP_Guide_Project

查看其他安全开发实践