Почему это ввод пустых строк в базу данных?
tester.php (форма)
<html> <head> </head> <body> <?php if(isset($_POST['search'])) { $valueToSearch = $_POST['valueToSearch']; // search in all table columns // using concat mysql function $query = "SELECT * FROM `students` WHERE CONCAT(`FName`, `LName`) LIKE '%".$valueToSearch."%'"; $search_result = filterTable($query); } else { $query = "SELECT * FROM `students`"; $search_result = filterTable($query); } // function to connect and execute the query function filterTable($query) { $connect = mysqli_connect("localhost", "root", "Summer$2000", "attendence"); $filter_Result = mysqli_query($connect, $query); return $filter_Result; } ?> <table border="1" align="center"> <tr> <th>First Name</th> <th>Last Name</th> <th>Mark</th> </tr> <?php while($row = mysqli_fetch_array($search_result)):?> <tr> <td><?php echo $row['FName'];?></td> <td><?php echo $row['LName'];?></td> <td> <form action="submit.php"> <table > <tr> <td> <input type="submit" value="Present"> </td> <td> <input type="submit" value="Absent"> </td> <td> <input type="submit" value="Tardy"> </td> </tr> </table> </form> </td> </tr> <?php endwhile;?> </table> </body> </html>
submit.php
<?php /* Attempt MySQL server connection. Assuming you are running MySQL server with default setting (user 'root' with no password) */ $link = mysqli_connect("localhost", "root", "Summer$2000", "attendence"); // Check connection if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } // Escape user inputs for security $FName = mysqli_real_escape_string($link, $_POST['FName']); $LName = mysqli_real_escape_string($link, $_POST['LName']); $Mark = mysqli_real_escape_string($link, $_POST['Mark']); // attempt insert query execution $sql = "INSERT INTO attendence (FName,LName,Mark) VALUES ('$FName','$LName','$Mark')"; if(mysqli_query($link, $sql)){ echo "Records added successfully."; } else{ echo "ERROR: Could not take attendence " . mysqli_error($link); } // close connection mysqli_close($link); ?>
Что я уже пробовал:
Я переписал сценарий пару раз, чтобы просмотреть синтаксис, и уже задал вопрос о stackoverflow без ответов в течение недели.
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]
Sinisa Hajnal
Вы проверили, что ваши переменные действительно содержат значения? Кажется, что некоторые из ваших одинарных кавычек перевернуты (возможно, это просто артефакт разбора текста доски, но проверьте свой код).