Попытка вставить в базу данных, введя значение в URL-адресе, но с трудностями вставить в базу данных:
Вот URL:
http://student.cs.hioa.no/~s180343/updatedb.php?verdi=22
Вот код:
<?php $dbhost = "MYSQL-SERVER"; $dbuser = "USERNAME"; $dbpass = ""; $verdi = $_GET['verdi']; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = "INSERT INTO test ('id') VALUES (`$verdi`)"; mysql_select_db('s180350'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Entered data successfully\n"; mysql_close($conn); ?>
Используйте кавычки вокруг ваших строковых значений. Используйте тики вокруг имен столбцов. У вас есть это в обратном направлении:
$sql = "INSERT INTO test ('id') VALUES (`$verdi`)";
shjould be
$sql = "INSERT INTO test (`id`) VALUES ('$verdi')";
FYI, вы широко открыты для SQL-инъекций
Вы делаете обратное, добавляя ''
для имени столбца и “ для значения
$sql = "INSERT INTO test ('id') VALUES (`$verdi`)";
должно быть
$sql = "INSERT INTO test (`id`) VALUES ('$verdi')";
Начните использовать инструкцию подготовки или, по крайней мере, ниже, после того, как определено conn.
$verdi = mysql_real_escape_string($verdi);
пожалуйста, не забудьте защитить все пользовательские данные в запросах sql. см. вики-версию SQL
Проблема с вашим кодом неверна в использовании котировок. См. Отредактированный код:
$conn = mysql_connect("MYSQL-SERVER", "USERNAME", $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } mysql_select_db('s180350'); $retval = mysql_query( "INSERT INTO test ('id') VALUES ('".mysql_real_escape_string($_GET['verdi'])"')", $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Entered data successfully\n";
PS: Не используйте ресурсы, задавая переменные, которые вам не нужны.