Я пытаюсь создать форму проверки для сайта, над которым я работаю, и если почтовые запросы работают без проверки, как только я начну вводить простой счетчик, чтобы предотвратить отправку запроса, он перестает работать
<?php
$ErrorCount = 0;
$StudentNO = $_POST['updateid'];
$editfirst = $_POST['updatefirst'];
$editSurname = $_POST['updatesurn'];
$editfirst = test_input($editfirst);
$editSurname = test_input($editSurname);
$StudentNO = test_input2($StudentNO);
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = preg_replace("/[^a-zA-Z]/", "", $data);
if (preg_match('/drop table/i', $data)) {
$data == null;
}
if ($data == null) {
$ErrorCount++;
}
}
function test_input2($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = preg_replace("/[^a-zA-Z]/", "", $data);
if (preg_match('/drop table/i', $data)) {
$data == null;
}
if (strlen($StudentNO) != 6) {
$ErrorCount++;
}
if ($data == null) {
$ErrorCount++;
}
}
if ($ErrorCount == 0) {
$server = 'sql.rde.hull.ac.uk';
$connectionInfo = array("Database"=>"rde_556278");
$conn = sqlsrv_connect($server, $connectionInfo);
$updateQuery = "UPDATE Users SET Firstname = '$editfirst', Surname = '$editSurname' WHERE StudentID = '$StudentNO';";
$result = sqlsrv_query($conn, $updateQuery);
sqlsrv_free_stmt( $updateQuery);
sqlsrv_close($conn);
}
?>
Проблема в том, что количество ошибок не увеличивается и не передается ни на что, никакая помощь, так как я просто не вижу свою ошибку. Я новичок в php
<?php
updateQuery = "INSERT INTO Locations (StudentID, ,[Location], [DateTime]) VALUES (?, ?, GETDATE());";
$params = array($UpdateStudent, $UpdateLocation);
$result = sqlsrv_query($conn, $updateQuery, $params);
?>
а, так как мне увеличить счетчик? он работает как есть, за исключением имен переменных на отдельной странице?
Вся предпосылка этого кода основана на плохих исследованиях. Если вы хотите избежать внедрения SQL, используйте параметризованные и связанные запросы. Даже если вы избегаете ввода, это небезопасно! Используйте подготовленные параметризованные операторы в API MYSQLI_ или PDO
И это как бы объясняет вам новую ошибку с вставкой StudentID, ,[Location],, у вас есть 2 запятые одна за другой
его mssql, извините, должен был быть указан, и, хотя это было целью, в настоящее время у меня нет времени для реализации изменений
И переменные $updateQuery! == updateQuery должны начинаться с $.
Почему бы и нет, вы помещаете их в запрос INSERT
о, извините, я пропустил $, который уже есть






Вы пробовали изменить определение функции на что-то вроде:
function test_input($data,$ErrorCount) { /*code....*/ }
function test_input2($data,$ErrorCount) { /*code....*/ }
Изменил его, чтобы фактически вернуть результат, это было частью проблемы, но возникла другая проблема, и я не могу сказать, откуда она взялась, онлайн-чекеры говорят, что это $ updateQuery = "INSERT INTO Locations (StudentID,, [Location ], [DateTime]) ЗНАЧЕНИЯ (?,?, GETDATE ()); "; но все было хорошо раньше
Сэм, вы не показываете нам код, содержащий запрос INSERT!?!?!?!
Переменный объем! Проверить это Вы устанавливаете новый
$ErrorCount, созданный внутри функции. Это не тот$ErrorCount, что и в основном прицеле.