将信息发送到数据库SQL PHP

将信息发送到数据库SQL PHP,php,mysql,Php,Mysql,我有一张表格要送到桌上。有两个下拉列表。第一个包含有关当前登录用户的作业的信息,第二个获取用户的所有用户名。日期字段、价格字段和注释字段。所以我的代码在这里: 此代码获取所有信息。submit.action.php 我的桌子如下: job_id int(11) service_provider_id int(10) customer_id int(10) date

我有一张表格要送到桌上。有两个下拉列表。第一个包含有关当前登录用户的作业的信息,第二个获取用户的所有用户名。日期字段、价格字段和注释字段。所以我的代码在这里:

此代码获取所有信息。submit.action.php

我的桌子如下:

    job_id                   int(11)
    service_provider_id      int(10)
    customer_id              int(10)
    date                     int(50)
    price                    int(255)
    vote                     varchar(255)
    service_provider_comment varchar(255)
    customer_comment         varchar(255)
介绍 在查看了您的代码之后,我已经调试了您的代码,并将问题本地化。在这个问题上几乎没有谜题

echo '<select name="job">';
echo '<option value="0">default job</option>';
while ($amch = mysql_fetch_assoc($dbresult))
{
    echo '<option value="' . $amch['job_id'] . '">' . $amch['job_name'] . '</option>';
}
我已经在我的测试环境中创建了您的代码场景

您的主表单将提交的内容发布到
send\u action.php

问题 为了调试,我在
send\u action.php
页面和
$selected=..
之后添加了
var\u dump($\u POST)行。这是一个很好的例子,看看是否收到了提交的内容

它显示作业出于某种原因未发布,并且您的
($\u POST['Job'])
带有错误消息
未定义索引
,因为此错误发生在
INSERT
语句中。因此,不会插入任何内容

解决方案 我已经检查了作业,它是空的,我添加了一个名为defaultvalue echo
“default Job”的选项,这是为了确保如果您的作业列表在测试环境下为空,那么应该提交一些内容,否则它将返回null并给出问题

echo '<select name="job">';
echo '<option value="0">default job</option>';
while ($amch = mysql_fetch_assoc($dbresult))
{
    echo '<option value="' . $amch['job_id'] . '">' . $amch['job_name'] . '</option>';
}
echo';
回显“默认作业”;
而($amch=mysql\u fetch\u assoc($dbresult))
{
回显'.$amch['job_name'].';
}
到目前为止还不错

我已经测试过在insert方法中手动注入数据,效果很好

最后: 将默认值放入作业后,现在一切正常,表单正在提交并保存到数据库

结论
  • 切换到MySQLi或PDO很重要
  • 应改进变量命名
  • 利用函数减少大量重复代码,如
    mysql\u escape\u string
    或数据库连接,创建中心页面并包含连接(我有一个答案,显示了一个使用PDO的min项目,您可以查看并获得灵感)
  • 更好、更清晰的代码和数据结构

  • 该解决方案是基于您的代码中呈现的内容,我没有机会对最终运行的数据库进行深入测试。我已经创建了一个用于插入数据的表,我还得到了您的旧版本数据库var_dump,这也很有帮助。

    您的代码可能包含语法错误。请查阅以下链接,并将其应用于您的代码。@Fred ii-没有错误!代码是真的吗?还需要写表实体吗?@Fred ii-我也有错误,这是因为OP使用旧的支持系统,我的和你的环境都不再兼容,我认为这是因为代码的某些组件不推荐使用。;)任何我都会看一看,看看我能做些什么。需要注意的是,您有一个名为
    date
    的字段,它具有特殊的含义-因此您应该将字段名称包含在反勾中。@sajad现在我正在做其他事情,但稍后检查;)你明白我的话哦,那不管用:(问题可能与我的表有关吗?让我将我的表添加到问题中。我知道问题在哪里。当我在表中创建关系时,表单返回null,我有两个主键。但当我删除“有效的关系”属性时!同样@sajad,正如您所看到的,web开发中的每件事情都是相互依赖的,干净的代码、更好的结构、好的变量名和d好的数据库设计将在最终阶段发挥作用,总有一些小问题和挑战,但这些问题和挑战会减少,做得更好。不管怎样,我知道你处于初级阶段,这是很好的,但尝试改进,建议。祝你好运。我很高兴,因为你总是帮助我,我认为我可以改进我的编码在你和其他人的帮助下:)谢谢兄弟:)我想只有你能在这里帮助我:
        job_id                   int(11)
        service_provider_id      int(10)
        customer_id              int(10)
        date                     int(50)
        price                    int(255)
        vote                     varchar(255)
        service_provider_comment varchar(255)
        customer_comment         varchar(255)
    
    echo '<select name="job">';
    echo '<option value="0">default job</option>';
    while ($amch = mysql_fetch_assoc($dbresult))
    {
        echo '<option value="' . $amch['job_id'] . '">' . $amch['job_name'] . '</option>';
    }