Php 表单:插入数据库,不工作

Php 表单:插入数据库,不工作,php,mysql,mysqli,insert,sql-update,Php,Mysql,Mysqli,Insert,Sql Update,我似乎无法让这个代码工作。它也是我的另一个没有更新的页面(更新)的基础 该代码应该向数据库中添加信息 查询本身工作。我认为查询可能太复杂了(因为pro 有连接到不同表的字段:fundpro,city,typepro,city连接到country),但由于它本身可以工作,我想有一种方法可以让它在PHP中工作,我只是做错了 在更新页面(上面的问题和代码链接)中,表单显示了正确的字段,因此我假设这两个页面中都没有重大错误,问题在于将信息“传递”到数据库或其他地方 我真的需要插入数据页面,它实际上是我最

我似乎无法让这个代码工作。它也是我的另一个没有更新的页面(更新)的基础


该代码应该向数据库中添加信息

查询本身工作。我认为查询可能太复杂了(因为pro 有连接到不同表的字段:fundprocitytypeprocity连接到country),但由于它本身可以工作,我想有一种方法可以让它在PHP中工作,我只是做错了

在更新页面(上面的问题和代码链接)中,表单显示了正确的字段,因此我假设这两个页面中都没有重大错误,问题在于将信息“传递”到数据库或其他地方

我真的需要插入数据页面,它实际上是我最终真正需要的唯一页面,我无法使它适用于我的orgpro表,而我的country表具有非常相似的可操作的添加和编辑页面

我想不出可能的原因是什么,我不知道如何让它为我工作。也许有人看到了问题,或者知道另一种方法

tl;dr数据不会从字段插入数据库。查询本身是cocer,基于update.php文件,表单正确返回信息

这是和


h1{color:red;}标签{color:darkred;}
添加项目
添加项目:
IDpro
numpro
namepro
日期f
日期
描述
typepro
fundpro
IDci

更新:更简单的代码,相同的模式:

header('Content-type: text/html; charset=utf-8');


isset($_GET['submit'])?$submit=true:$submit=false;

if(!$submit){
    ?>
    <!DOCTYPE html>
<html>
<head>
<style>h1{color:red;}label{color:darkred;}</style>
<title>Add city</title>
<meta charset=”UTF-8”>      

</head>

<body>

<h1>Add city:</h1>
<form name="f1" action="" method="GET" onSubmit="return validateForm(this)" >
<label>city id </label><input type="text" name="idci"><br>
<label>city </label><input type="text" name="nameci"><br>

<label>country id </label><input type="text" name="country_idco"><br>
<input type="reset" value="clear">
<input type="submit" value="add" name="submit"><br>


</body>
</html>
<?php
}else{
    include "../config.php";
    isset($_GET['idci'])?$idci=$_GET['idci']:$idci='';
    isset($_GET['nameci'])?$nameci=$_GET['nameci']:$nameci='';
//  isset($_GET['nameco'])?$nameco=$_GET['nameco']:$nameco='';
    isset($_GET['idco'])?$idco=$_GET['idco']:$idco='';

    //if(($name!='')&&($nameci!='')&&($nameco!='')){
        //echo "$name $nameci $nameco";


    $sql="INSERT INTO city(idci, nameci,country_idco) VALUES (?,?,?)";

    $stmt = $mysqli->prepare($sql);

    $stmt->bind_param('isi', $idci, $nameci, $country_idco);

    $stmt->execute();

    $stmt->close();

    $mysqli->close();

    header("Location: view.php");
    //}
}
header('Content-type:text/html;charset=utf-8');
isset($_GET['submit'])?$submit=true:$submit=false;
如果(!$submit){
?>
h1{color:red;}标签{color:darkred;}
添加城市
添加城市:
城市id
城市
国家id


在insert语句中只允许9个参数,但在
bind_param
方法中要传递10个参数

<label>IDpro </label><input type="text" name="idpro"><br>
<label>numpro</label><input type="text" name="numpro" ><br>
<label>namepro </label><input type="text" name="namepro" ><br>
<label>datef </label><input type="text" name="idpro" ><br>
<label>datet </label><input type="text" name="idpro" ><br>
<label>descr </label><input type="text" name="descr" ><br>
<label>typepro </label><input type="text" name="numpro" ><br>
<label>fundpro </label><input type="text" name="numpro" ><br>
<label>IDci </label><input type="text" name="idpro" ><br>
您可以看到顺序-(idpro、numpro、namepro、datef、datet、descr、typepro_idtypepro、fundpro_idfundpro、city_idci);您的数据库希望您提供的参数与它们匹配。因此,第一个参数将映射到idpro。如果您将idpro作为最后一个参数发送,它将映射到city_idci,从而导致数据类型不匹配错误


更正您的订单并正确处理您的基本问题。

您好,您可以发布错误信息吗?您可以使用此选项,您可能应该使用以下模式:
$x=isset($y)?$y:$z
而不是使用三元函数来运行两个不同的赋值中的一个。没有显示错误。@tadman,我不知道如何更改代码以适应模式,但感谢您的建议,我会尝试理解它。问题是,代码基本上可以用于更简单的查询,所以我想它也可以用于这一个。它给您一个y错误?那么问题到底是什么?我不知道这就是为什么我问问题的原因我指的是你面临的问题。用编辑过的代码更新问题,并指定你的“问题”到底是什么“代码应该将信息添加到数据库中。问题在“交付”中“将信息传送到数据库或其他地方。“我认为$idpro显然是第9位。它被放在后面而不是开头,因为我们就是这样被教导编写代码的。我试着把它放在第一位,但没有任何改变。考虑到我尝试修复它的时间,我至少计算了20次:D@Evan是的,但你刚过10级
<label>IDpro </label><input type="text" name="idpro"><br>
<label>numpro</label><input type="text" name="numpro" ><br>
<label>namepro </label><input type="text" name="namepro" ><br>
<label>datef </label><input type="text" name="idpro" ><br>
<label>datet </label><input type="text" name="idpro" ><br>
<label>descr </label><input type="text" name="descr" ><br>
<label>typepro </label><input type="text" name="numpro" ><br>
<label>fundpro </label><input type="text" name="numpro" ><br>
<label>IDci </label><input type="text" name="idpro" ><br>
<label>typepro </label><input type="text" name="numpro" ><br>
<label>fundpro </label><input type="text" name="numpro" ><br>
  $sql="INSERT INTO pro(idpro, numpro, namepro, datef, datet, descr,typepro_idtypepro, fundpro_idfundpro, city_idci) VALUES (?,?,?,?,?,?,?,?,?)";