-1

我在 PostgreSQL 系统上。我以前使用过它并且没有遇到过这个问题,但那是用于基本的选择查询。

现在我正在尝试通过 HTML 表单和 php 插入数据。

当我填写数据时(即使我输入了表单上的所有字段),我也没有收到错误消息,所以我认为应该插入它......

这是我的 php/html:

<div id='insert_form'>
<form method='POST' action='insert.php' onsubmit='return checkSubmit()'>
  <label id='lbl_header'><b>Bold</b> fields are required.</label>
  <br /><br />
  <label class='required' for='code1' id='lbl_code1'>* Country code</label>
  <input type='text' name='code1' id='code1' maxlength='3' size='3'/>
  <br /><br />
  <label class='required' for='code2' id='lbl_code2'>* Country code (abbr.)</label>
  <input type='text' name='code2' id='code2' maxlength='2' size='2'/>
  <br /><br />
  <label class='required' for='country_name' id='lbl_name'>* Country name</label>
  <input type='text' name='country_name' id='country_name' maxlength='52'/>
  <br /><br />
  <label class='required' for='continent' id='lbl_continent'>* Continent</label>
  <select name='continent' id='continent'>
    <option value='Africa'>Africa</option>
    <option value='Antarctica'>Antarctica</option>
    <option value='Asia'>Asia</option>
    <option value='Europe'>Europe</option>
    <option value='North America'>North America</option>
    <option value='Oceania'>Oceania</option>
    <option value='South America'>South America</option>
  </select>


  <br /><br />
  <label class='required' for='region' id='lbl_region'>* Region</label>
  <input type='text' name='region' id='region' maxlength='26' />
  <br /><br />
  <label class='required' for='area' id='lbl_area'>* Surface area</label>
  <input type='text' name='area' id='area' />
  <br /><br />
  <label for='indepYear' id='lbl_year'>Year of independence</label>
  <input type='text' name='indepYear' id='indepYear' />
  <br /><br />
  <label class='required' for='population' id='lbl_pop'>* Population</label>
  <input type='text' name='population' id='population' />
  <br /><br />
  <label for='lifeExp' id='lbl_lifeExp'>Life expectancy</label>
  <input type='text' name='lifeExp' id='lifeExp' />
  <br /><br />
  <label for='gnp' id='lbl_gnp'>GNP</label>
  <input type='text' name='gnp' id='gnp' />
  <br /><br />
  <label for='gnp_old' id='lbl_gnp_old'>GNP (old)</label>
  <input type='text' name='gnp_old' id='gnp_old' />
  <br /><br />
  <label class='required' for='local_name' id='lbl_local_name'>* Local name</label>
  <input type='text' name='local_name' id='local_name' maxlength='45' />
  <br /><br />
  <label class='required' for='govt' id='lbl_govt'>* Form of government</label>
  <input type='text' name='govt' id='govt' maxlength='45' />
  <br /><br />
  <label for='HoS' id='lbl_HoS'>Head of state</label>
  <input type='text' name='HoS' id='HoS' maxlength='60' />
  <br /><br />
  <label for='capital' id='lbl_capital'>Capital code</label>
  <input type='text' name='capital' id='capital' />
  <br /><br />
  <label><a href='index.php'>Return to Selection Page</a></label>
  <input type='submit' name='submit' value='Insert row' />
</form>


?>

连接文件已经被证明可以在我过去的项目中工作,所以我知道这不是问题。我已经编译了它,它也说那不是问题。知道为什么它不会插入数据库吗?或者,也许我可以在末尾添加一个可以检查它是否已被插入的 if 语句的函数?

4

1 回答 1

3

以您现在的方式使用 INSERT,您必须确保 VALUES () 子句的内容与表中列的数量和顺序完全匹配。如果有任何列不包括在内,即使它们具有默认值或自动编号,该命令也会失败。由于您没有显示有关您的表格的任何信息,我不知道这是否是您问题的根源。

如果是问题,可以使用完整形式的 INSERT:

 INSERT INTO county (col1, col2, col3) VALUES ($val1, $val2, $val3)

在任何情况下都强烈推荐这种形式,因为它不对表做任何假设(除了列的名称),并防止命令因以后对表的结构更改而失败。

于 2012-09-28T01:08:55.850 回答