Я пытаюсь вставить данные в таблицу, используя php. Я сделал это, чтобы зарегистрировать пользователей, и он работает нормально, но теперь я пытаюсь сделать это, чтобы отправлять отзывы, и я продолжаю получать ошибки. Я попытался найти ответ, но я не могу понять, в чем проблема.Ошибка ввода данных в базу данных MySQL с использованием php
Я проделал некоторую отладку, и я знаю, что переменные хранят правильные данные и что php подключается к правильной таблице, однако, когда я пытаюсь вставить переменные в таблицу, это не сработает.
Вот мой PHP:
<?php
session_start();
$dbhost = 'localhost';
$dbuser = 'rlr17';
$dbpass = 'rlr17';
$dbname = 'rlr17';
$dbtable = 'bookclubreviews';
// connect to the database
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql database '. mysql_error());
$bookID=$_GET["bookID"];
$userID=$_GET["userID"];
$reviewTitle=$_GET["reviewTitle"];
$reviewContent=$_GET["reviewContent"];
$rating=$_GET["ratingToSubmit"];
$reviewID= uniqid($id).date("ymd");
if (!$db) {
die('Not connected : ' . mysql_error());
} else {
}
// select the table
$dbselect = mysql_select_db($dbname);
if (!$dbselect) {
die ('Can\'t use $dbname : ' . mysql_error());
} else {
echo "connected to $dbname";
}
if ($bookID=='') {
$bookID="empty";
}
if ($userID=='') {
$userID="empty";
}
if ($reviewTitle=='') {
$reviewTitle="empty";
}
if ($reviewContent=='') {
$reviewTitle="empty";
}
if ($rating=='') {
$rating="empty";
}
//the next 4 lines are to test that the right table is being connected to - it is, this works
$sql1="SELECT * FROM $dbtable WHERE userID='$userID'";
$result1 = mysql_query($sql1,$db);
$result4 = mysql_num_rows($result1);
echo "worked - $result4 <br>";
//This is the bit that I can't get to work.
$insert = "INSERT INTO $dbtable VALUES('$userID','$bookID','$reviewTitle','$reviewContent','$rating')";
$result=mysql_query($insert,$db);
if ($result) {
echo "review submitted". ".<br>";
$data = '';
include('home.php') ;
} else {
echo 'Error with submitting data <br>' . $bookID . $userID . $reviewTitle . $reviewContent . $rating . $reviewID . "<br> db: " .$db;
}
mysql_close($db);
?>
И это screenshot of how my table is set up
и это ссылка на мою работу - http://itsuite.it.brighton.ac.uk/rlr17/bookClub/insertReview.php?bookID=5&userID=rlr17&reviewTitle=Test&reviewContent=test&ratingToSubmit=4
Любые намеки бы весьма признателен!
функции mysql_ были устаревшими с 2013 года и ** не существует в PHP больше **, прекратите использовать их. Также см. [Почему я не должен использовать функции mysql_ * в PHP?] (Http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) Кроме того, ваш код широко открыт для атак SQL-инъекций. – Oldskool
[Маленький Бобби] (http://bobby-tables.com/) говорит, что [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent -SQL-инъекция-в-РНР). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! –
Пожалуйста, [прекратите использование 'mysql_ *' функций] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). [Эти расширения] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http://en.wikipedia.org/ wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) и подумайте над использованием PDO, [это действительно довольно легко] (http://jayblanchard.net/demystifying_php_pdo.html). –