我使用php和mysql将数据添加到数据库。当我向表单添加数据并提交数据时,我收到一条消息,说明数据已成功添加。但是,当我在phpmyadmin上查看数据库时,我看到的只是一个空白行,只有主键。数据库正在存储用户输入的板球运动员。 更新:我把冒号放进去就像所有人说的那样,现在IF语句回来说无法添加数据。所以现在它根本没有添加任何东西。 这是我的代码:
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$dob=$_POST['dob'];
$teamrole=$_POST['teamrole'];
$testruns=$_POST['testruns'];
$testwickets=$_POST['testwickets'];
$odiruns=$_POST['odiruns'];
$odiwickets=$_POST['odiwickets'];
$truns=$_POST['truns'];
$twickets=$_POST['twickets'];
$searchteam=$_POST['searchteam'];
$query="INSERT INTO player VALUES (NULL, :First_Name, :Last_Name, :Date_of_Birth, :Team_Role, :Test_Runs, :Test_Wickets, :ODI_Runs, :ODI_Wickets, :t20_Runs, :t20_Wickets, :TeamID) ";
$stmt=$conn->prepare($query);
$stmt->bindValue(':First_Name', $fname);
$stmt->bindValue(':Last_Name', $lname);
$stmt->bindValue(':Date_Of_Birth', $dob);
$stmt->bindValue(':Team_Role', $teamrole);
$stmt->bindValue(':Test_Runs', $testruns);
$stmt->bindValue(':Test_Wickets', $testwickets);
$stmt->bindValue(':ODI_Runs', $odiruns);
$stmt->bindValue(':ODI_Wickets', $odiwickets);
$stmt->bindValue(':t20_Runs', $truns);
$stmt->bindValue(':t20_Wickets', $twickets);
$stmt->bindValue(':TeamID', $searchteam);
$affected_rows = $stmt->execute();
if($affected_rows==1)
{
echo "Successfully added the details for ".$fname;
}
else
{
echo "Could not add data for ".$fname;
}
答案 0 :(得分:2)
您的查询中的绑定名称是错误的 - 删除`字符并使用半冒号(根据您的绑定变量)。此外,当您插入新行时,不指定主键,因为它应该自动生成。
$query = "INSERT INTO `player` VALUES (null, :First_Name, :Last_Name, :Date_of_Birth, :Team_Role, :Test_Runs, :Test_Wickets, :ODI_Runs, :ODI_Wickets, :t20_Runs, :t20_Wickets, :TeamID) ";
答案 1 :(得分:1)
您的sql不正确。您绑定了以冒号开头的参数,但您的sql语句不包含它们
$query="INSERT INTO `player` VALUES (NULL, :First_Name, :Last_Name ...
Back ticks也是MySQL的字段分隔符。
答案 2 :(得分:1)
您的查询构造不正确,您需要使用:
添加参数,如下所示;
$query="INSERT INTO `player` (`First_Name`, `Last_Name`, `Date_of_Birth`,
`Team_Role`, `Test_Runs`, `Test_Wickets`, `ODI_Runs`, `ODI_Wickets`,
`t20_Runs`, `t20_Wickets`, `TeamID`)
VALUES (:First_Name, :Last_Name, :Date_of_Birth, :Team_Role,
:Test_Runs, :Test_Wickets, :ODI_Runs, :ODI_Wickets,
:t20_Runs, :t20_Wickets, :TeamID)";
请注意,由于它是自动生成的,因此您应该省略PlayerID主键的值,只有当您列出实际要插入值的列时才能这样做。
作为次要好处,如果您决定向表中添加字段,列出查询中涉及的字段将会阻止插入因缺少列而失败。