Я очень плохо знаком с php и пытаюсь вставить данные в свою базу данных. У меня уже есть таблица с именем «Locate» в моей базе данных, которую я пытаюсь обновить, в ней есть столбцы «Longitude», «Latitude» и «ID».
Во-первых, подходит ли мой код ниже для обновления этой таблицы.
Во-вторых, я хочу добавить код, который проверит базу данных и убедится, что идентификатор не тот, который уже использовался, заранее спасибо.
<?php
$longitude = $_GET['longitude'];
$latitude = $_GET['latitude'];
$username = $_GET['username'];
// Create connection
$con=mysqli_connect("localhost","dbuser","password","yviewdb");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE CFP SET Longitude = '$longitude' AND Latitude = '$latitude' WHERE ID = '$username';";
$res = mysql_query($sql,$con) or die(mysql_error());
// Close connections
mysqli_close($con);
if ($res) {
echo "success";
}else{
echo "failed";
}
?>
Есть несколько вещей не так с вашим кодом, будучи этими строками:
$sql = "UPDATE CFP SET Longitude = '$longitude' AND Latitude = '$latitude' WHERE ID = '$username';";
$res = mysql_query($sql,$con) or die(mysql_error());
Вы смешиваете MySQL API, используя mysql_
а также mysqli_
они не смешиваются вместе.
Sidenote: переменная подключения к БД стоит первой в mysqli_
, так что это было изменено, чтобы отразить это. Смотрите исправление ниже.
Плюс, вы используете AND
вместо запятой (в качестве разделителя) в вашем SET для разделения обоих столбцов, которые будут обновлены.
$sql = "UPDATE CFP SET Longitude = '$longitude', Latitude = '$latitude' WHERE ID = '$username';";
$res = mysqli_query($con,$sql) or die(mysqli_error($con));
Вы также слишком рано закрываете соединение с БД, поместите его после того, как проверили, был ли запрос успешным:
if ($res) {
echo "success";
}else{
echo "failed";
}
mysqli_close($con);
Также убедитесь, что ваша форма отражает ваш метод GET для ваших переменных.
Кроме того, ваш настоящий код открыт для SQL-инъекция. использование готовые заявления, или же PDO с подготовленными заявлениями, они намного безопаснее.
Посетите веб-сайт MySQL.com для получения синтаксиса UPDATE:
Тем не менее, заголовок вашего вопроса читается как «вставить данные …» и в вашем вопросе «и я пытаюсь вставить данные в свою базу данных»
Если вы хотите вставить, а не обновить, а затем сделать
$sql = "INSERT INTO CFP (Longitude, Latitude) VALUES ('$longitude', '$latitude')";
Для синтаксиса о том, как вставить в таблицу, посетите:
Отчет об ошибках
добавлять Отчет об ошибках в начало вашего файла (ов), который поможет найти ошибки.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Примечание: Отчеты об ошибках должны выполняться только на стадии подготовки, а не на производстве.
Прежде всего, вы никогда не должны использовать GET-запрос для внесения изменений в базу данных. GET-запросы от сервера должны использоваться только для просмотра данных, как в поисковом запросе или что-то в этом роде.
Далее вы не скрываете предоставленную информацию для вредоносного кода.
Наконец, вы смешиваете API-интерфейсы mysql и mysqli, которые не дают желаемого поведения.
В любом случае, я не знаю тонкостей вашего приложения, поэтому я просто согласен с тем, что у вас есть, и внесу необходимые исправления:
<?php
$longitude = $_GET['longitude'];
$latitude = $_GET['latitude'];
$username = $_GET['username'];
// Create connection
$con=mysqli_connect("localhost", "dbuser", "password", "yviewdb");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE CFP SET Longitude = '$longitude', Latitude = '$latitude' WHERE ID = '$username'";
$res = mysqli_query($con, $sql) or die(mysql_error());
// Close connections
mysqli_close($con);
if($res){
echo "success";
}else{
echo "failed";
}
?>
Изменения:
1. вы не ставите точку с запятой в конце запроса в переменную $ sql, вы просто закрываете скобки и ставите точку с запятой в конце обычного оператора PHP.
Я использовал дополнительное форматирование, чтобы сделать ваш код более разборчивым.
Используйте запятые, а не «И» при установке нескольких значений в инструкции UPDATE для MySQL.