【问题标题】:SQL statement in php will not insert onto databasephp中的SQL语句不会插入到数据库中
【发布时间】:2014-04-28 19:39:59
【问题描述】:

我有这个 SQL 语句,我试图将新学生保存到学生表中,但是它根本没有这样做,当我运行错误报告并运行时,我没有收到任何错误消息sqlbuddy 中的查询与交换的值,它工作正常。任何关于我做错了什么的想法将不胜感激。

代码如下:

<?php
session_start();
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
$default = 'default';
$ClassID = $_GET['ID'];
$Surname = $_POST['Surname'];
$Firstname = $_POST['Firstname'];
$Firstletter = $Firstname[0];
$Username = $Firstletter + $Surname;
$sql_link = mysqli_connect('localhost', 'root', 'password', 'GameData');
$counter = mysqli_query($sql_link,"SELECT * FROM IDCounter");
$counter = mysqli_fetch_array($counter);
mysqli_query($sql_link,"INSERT INTO tblStudents(StudentID, StudentFirstName,    StudentSurname, ClassID, UserName, Password, CharacterSelect)
VALUES ('$counter[Counter]', '$_POST[Firstname]', '$_POST[Surname]', '$ClassID',  '$Username', '$default', 1)");
mysqli_close($sql_link);
header ("Location: TeacherSide.php");
?>

POST 值来自指向该页面的表单

【问题讨论】:

  • 删除header() 调用并添加echo mysqli_error($sql_link); — 你有任何错误吗?
  • 在使用错误检查时,我收到以下错误消息:警告:mysqli_error():无法在第 18 行的 /var/www/game/classmod.php 中获取 mysqli
  • 请允许我纠正自己,我把它放在 sql_close 之后,为任何混淆道歉,在把它放在更合适的地方之后没有显示任何问题
  • 使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs$_POST 数据从不直接进入查询。
  • 由于我不理解页面暂时工作的原因,然后我将 $_POST[Firstname] 和 $_POST[Surname] 更改为代码中前面所述的相应变量,现在该语句再次无法工作。

标签: php mysql sql sqlbuddy


【解决方案1】:

我刚刚解决了我遇到的问题,很遗憾地告诉你这是一个相当愚蠢的问题,我没有更新我的计数器,所以每次我尝试添加一个新学生时,它都会尝试使用相同的 StudentID,因此会失败,一个简单的修复

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多