MySQL повлиял на строки -1 при вставке данных в базу данных - PullRequest
0 голосов
/ 10 июня 2018

Я хочу создать простой кусок кода, который будет помещать данные в базу данных с помощью PHP-скрипта, все работает отлично, кроме помещения данных в базу данных!(Я использую сервер с PHP7)

Вывод затронутых строк показывает -1 (странно), я дважды проверил свой код, сравнил его с другими, попытался найти общую проблему в Интернете, дажепробовал на локальном сервере безрезультатно.

Вы можете увидеть это здесь:
https://leer.bosvision.nl/register.php

Мой код:

<?php

$conn = mysqli_connect("localhost", "-user-", "-pass-", "-db-");

if(!$conn) {
    $msg = die('connection error');

} else {

    $msg = 'Connection success.';
}

echo $msg;

?>

<?php

$query = 'INSERT INTO users_two (ID, username, password) VALUES (1, gfd, gfd)';

if(mysqli_query($conn, $query)) {
    $result = 'Data saved';
} else {
    $result = 'No data saved';
}

$affected = mysqli_affected_rows($conn);

    echo $result . '.' . ' Affected rows: ' . $affected;

?>

Ответы [ 4 ]

0 голосов
/ 10 июня 2018

Прочтите эту страницу для получения дополнительной информации: Оператор вставки PHP

$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

Обычно вы не должны вставлять идентификатор самостоятельно, потому что это должно быть автоматическое увеличение.

0 голосов
/ 10 июня 2018

Цитируя документацию :

-1 указывает, что запрос вернул ошибку.

И ваш оператор insert действительно содержит ошибкиout, поскольку у вас нет столбца gfd.Если вы хотите использовать это как значение, оно должно быть заключено в одинарные кавычки:

$query = "INSERT INTO users_two (ID, username, password) VALUES (1, 'gfd', 'gfd')";
# Here -------------------------------------------------------------^---^--^---^
0 голосов
/ 10 июня 2018

<?php

	$conn = mysqli_connect("localhost", "-user-", "-pass-", "-db-");

if(!$conn) {
	$msg = die('connection error');
	
} else {
	
	$msg = 'Connection success.';
}

echo $msg;
	
?>

	
	
<?php
	
$query = "INSERT INTO users_two (username, password) VALUES ('gfd', 'gfd')";
	
if($result= mysqli_query($conn, $query)) {
	$result = 'Data saved';
} else {
	$result = 'No data saved';
}
	
$affected = mysqli_affected_rows($conn);
	
	echo $result . '.' . ' Affected rows: ' . $affected;
	
?>

Предполагается, что ID - это автоинкремент, поэтому он не должен быть там, или это не так, и проблема, с которой вы сталкиваетесь, состоит в том, что это дублирующая запись дляключ.Также вам нужно обернуть ваши данные var в ''

. Я думаю, это проблема SQL.Можете ли вы выполнить свой запрос непосредственно в вашей базе данных?Это даст вам ошибку.

0 голосов
/ 10 июня 2018

попробуйте добавить к строковым значениям кавычки, например:

"INSERT INTO users_two (ID, имя пользователя, пароль) VALUES (1, 'gfd', 'gfd')"

...