вставить данные в mysql после сканирования уже используемого имени пользователя

Я очень плохо знаком с 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";
}
?>

1

Решение

Есть несколько вещей не так с вашим кодом, будучи этими строками:

$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

Примечание: Отчеты об ошибках должны выполняться только на стадии подготовки, а не на производстве.

4

Другие решения

Прежде всего, вы никогда не должны использовать 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.

  1. Я использовал дополнительное форматирование, чтобы сделать ваш код более разборчивым.

  2. Используйте запятые, а не «И» при установке нескольких значений в инструкции UPDATE для MySQL.

1

По вопросам рекламы [email protected]