我似乎无法使此代码正常工作。 它也是我的其他页面(更新)的基础,不会 want to更新。
代码应该将信息添加到数据库中。
查询单独工作。我认为可能查询过于复杂(因为 pro 具有连接到不同表格的字段: fundpro ,城市, typepro 和城市连接到国家),但由于它本身是有效的,我想有一种方法可以让它在PHP中运行,我只是做错了。
在更新页面(上面链接到问题和代码)表单显示正确的字段,所以我假设两个页面都没有重大错误,问题在于将信息“传递”到数据库或其他什么。 / p>
我真的需要插入数据页面,它实际上是我最终真正需要的唯一页面,而且我无法使其适用于我的 org 和 pro 表格,而我的国家/地区表格可以添加和编辑非常相似的页面。
我没有想法可能是什么原因,我不知道如何使它适合我。也许有人看到问题或知道另一种方法?
tl; dr 数据不会从字段中插入数据库。查询本身是coccer,基于update.php文件,表单正确返回信息。
以下是SQLFiddle和EER Diagram。
<?php
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 project</title>
<meta charset=”UTF-8”>
</head>
<body>
<h1>Add project:</h1>
<form name="f1" action="" method="GET" onSubmit="return validateForm(this)">
<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="datef" ><br>
<label>datet </label><input type="text" name="datet" ><br>
<label>descr </label><input type="text" name="descr" ><br>
<label>typepro </label><input type="text" name="typepro" ><br>
<label>fundpro </label><input type="text" name="fundpro" ><br>
<label>IDci </label><input type="text" name="idpro" ><br>
<input type="reset" value="clear">
<input type="submit" value="add" name="submit"><br>
</form>
</body>
</html>
<?php
}else{
include "../config.php";
isset($_GET['idpro']) ? $idpro=$_GET['idpro'] : $idpro='';
isset($_GET['numpro']) ? $numpro=$_GET['numpro'] : $numpro='';
isset($_GET['namepro']) ? $namepro=$_GET['namepro'] : $namepro='';
isset($_GET['datef']) ? $datef=$_GET['datef'] : $datef='';
isset($_GET['datet']) ? $datet=$_GET['datet'] : $datet='';
isset($_GET['descr']) ? $descr=$_GET['descr'] : $descr='';
isset($_GET['typepro']) ? $typepro=$_GET['typepro'] : $typepro='';
isset($_GET['fundpro']) ? $fundpro=$_GET['fundpro'] : $fundpro='';
isset($_GET['idci']) ? $idci=$_GET['idci'] : $idci='';
$sql="INSERT INTO pro(idpro, numpro, namepro, datef, datet, descr,typepro_idtypepro, fundpro_idfundpro, city_idci) VALUES (?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('ssddsiiii', $numpro, $namepro, $datef, $datet,$descr, $typepro_idtypepro, $fundpro_idfundpro, $city_idci, $idpro);
$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;
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");
//}
}
答案 0 :(得分:1)
<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 (?,?,?,?,?,?,?,?,?)";
你看到了订单 - (idpro,numpro,namepro,datef,datet,descr,typepro_idtypepro,fundpro_idfundpro,city_idci);您的数据库期望您提供的参数与它们匹配。所以,第一个参数将映射到idpro。如果您发送idpro作为最后一个参数,它将被映射到city_idci导致数据类型不匹配错误。
纠正您的订单并确保您的基本知识。
答案 1 :(得分:-1)
您只允许在insert语句中使用9个参数,但在bind_param
方法中传递10个参数。