【发布时间】: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] 更改为代码中前面所述的相应变量,现在该语句再次无法工作。