我附上了我的PHP代码片段。我收到此错误,并尝试通过查找查询返回false的原因来调试它。
<html>
<body>
<form action="index.php" method="post" >
<table style="width: 100%;">
<tr>
<td width="10%">Advisor name </td>
<td width="10%"> <input type="text" name="advisor" id="advisor" ></td>
<td width="10%"> </td>
<td width="10%"> </td>
<td> </td>
</tr>
<tr>
<td>Student name</td>
<td> <input type="text" name="sname" id="sname" ></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Student ID</td>
<td> <input type="text" name="studentid" id="studentid" ></td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Class Code </td>
<td> <input type="text" name="classcode" id="classcode" ></td>
<td> </td>
<td>Search Advisor</td>
<td> <input type="text" name="searchAdv" id="searchAdv" ></td>
</tr>
<tr>
<td> </td>
<td> <input type="submit" name="button1" value="Save" style="width: 93px" /></td>
<td> </td>
<td> </td>
<td>
<input type="submit" name="button2" value="Search" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
<hr>
<h2> Result </h2>
<?php
if(array_key_exists('button1', $_POST))
{
DataSave(); /* IF CLICKED OF SAVED BUTTON */
}
else if(array_key_exists('button2', $_POST))
{
DataRetreive(); /* IF CLICKED OF SEARCH BUTTON */
}
function DataSave() /* FUNCTION START */
{
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$dbname = 'mysql';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if(! $conn ){
die('Could not connect: ' . mysqli_error());
}
if(isset($_POST["button1"])) /* IF CLICKED OF SAVED BUTTON */
{
$Advisor = $_POST['advisor'];
$StudentName = $_POST['sname'];
$Studentid = $_POST['studentid'];
$ClassCode = $_POST['classcode'];
/* USED PREAPRE STATMENT TO AVOID SQL INJECTION */
$stmt = $conn->prepare("INSERT INTO datas(Advisor,Sname,Studentid,ClassCode) VALUES
(?,?,?,?) ");
$stmt->bind_param("ssss", $Advisor, $StudentName, $Studentid,$ClassCode );
$stmt->execute();
$stmt->close();
}
$conn->close();
} /* FUNCTION END */
function DataRetreive() /* FUNCTION START */
{
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$dbname = 'mysql';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if(isset($_POST["button2"])) /* IF CLICKED OF SEARCH BUTTON */
{
$searchAdv = $_POST['searchAdv']; /* RETRIEVE FROM POST DATA*/
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
/* USED PREAPRE STATMENT TO AVOID SQL INJECTION */
$stmt = $conn->prepare("SELECT * FROM datas where Advisor like ? ");
$stmt->bind_param("s", $searchAdv);
$stmt->execute();
$stmt->bind_result($Advisor , $StudentName,$Studentid,$ClassCode);
/* fetch values */
while ($stmt->fetch()) {
echo " Advisor : " . $Advisor. " , Student Name : " . $StudentName. " , StudentId
: " . $Studentid. ",
Class Code : " . $ClassCode. " <br>";
}
$stmt->close();
}
mysqli_close($conn);
} /* FUNCTION END */
?>
</body>
</html>
答案 0 :(得分:-2)
$stmt = $conn->prepare("INSERT INTO datas(Advisor,Sname,Studentid,ClassCode) VALUES
(?,?,?,?) ");
$stmt->bind_param("ssss", $Advisor, $StudentName, $Studentid,$ClassCode );
我不确定,但我认为您在“插入”中有4列,但您尝试绑定5个值。列数必须与值相同