Błąd składni SQL w zapytaniu

0

screenshot-20230108181029.png
mój kod

<?php
session_start();
include "db.php";
if (isset($_POST["f_name"])) {

	$f_name = $_POST["f_name"];
	$email = $_POST['email'];
	$password = $_POST['password'];
	$repassword = $_POST['repassword'];
	$name = "/^[a-zA-Z ]+$/";
	$emailValidation = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9]+(\.[a-z]{2,4})$/";

if(empty($f_name) || empty($email) || empty($password) || empty($repassword)){
		
		echo "
			<div class='alert alert-warning'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a><b>PLease Fill all fields..!</b>
			</div>
		";
		exit();
	} else {
		if(!preg_match($name,$f_name)){
		echo "
			<div class='alert alert-warning'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
				<b>this $f_name is not valid..!</b>
			</div>
		";
		exit();
	}

	}
	if(!preg_match($emailValidation,$email)){
		echo "
			<div class='alert alert-warning'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
				<b>this $email is not valid..!</b>
			</div>
		";
		exit();
	}
	if(strlen($password) < 9 ){
		echo "
			<div class='alert alert-warning'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
				<b>Password is weak</b>
			</div>
		";
		exit();
	}
	if(strlen($repassword) < 9 ){
		echo "
			<div class='alert alert-warning'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
				<b>Password is weak</b>
			</div>
		";
		exit();
	}
	if($password != $repassword){
		echo "
			<div class='alert alert-warning'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
				<b>password is not same</b>
			</div>
		";
	}

	}
 //existing email address in our database
	$sql = "SELECT user_id FROM user_info WHERE email = '$email' LIMIT 1" ;
	$check_query = mysqli_query($con,$sql);
	$count_email = mysqli_num_rows($check_query);
	if($count_email > 0){
		echo "
			<div class='alert alert-danger'>
				<a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
				<b>Email Address is already available Try Another email address</b>
			</div>
		";
		exit();
	} else {
		$password = md5($password);
		$sql = "INSERT INTO `user_info` 
		(`user_id`, `first_name`,  `email`, `password`), 
		VALUES (NULL, '$f_name',  '$email', '$password',)";
		$run_query = mysqli_query($con,$sql);
		$_SESSION["uid"] = mysqli_insert_id($con);
		$_SESSION["name"] = $f_name;
		$ip_add = getenv("REMOTE_ADDR");
		$sql = "UPDATE cart SET user_id = '$_SESSION[uid]' WHERE ip_add='$ip_add' AND user_id = -1";
		if(mysqli_query($con,$sql)){
			echo "register_success";
			exit();
		}
	}

	




?>
0

Zdaje się, że masz nadmiarowy przecinek w części VALUES (...).

0
Patryk27 napisał(a):

Zdaje się, że masz nadmiarowy przecinek w części VALUES (...).

usunąłem ten przecinek, błąd dalej występuje.
Mogę wysłać załącznik z kodem?

0

Tak, pokaż zmieniony kod oraz wrzuć screenshota z tego poprawionego kodu.

0
Patryk27 napisał(a):

Tak, pokaż zmieniony kod oraz wrzuć screenshota z tego poprawionego kodu.

screenshot-20230108182328.png

0

Mógłbyś jeszcze podrzucić komunikat błędu, na tym nowym kodzie?

0
Patryk27 napisał(a):

Mógłbyś jeszcze podrzucić komunikat błędu, na tym nowym kodzie?

Bez tytułu.png
ecommerceapp.sql

0

A, masz jeszcze nadmiarowy przecinek na końcu listy kolumn: ),.

0
Patryk27 napisał(a):

A, masz jeszcze nadmiarowy przecinek na końcu listy kolumn: ),.

okej błąd sie zmienił,
screenshot-20230108192138.png

1

Zamiast robić '$_SESSION[uid]' (wewnątrz zapytania), przypisz tę wartość najpierw do zmiennej i zrób '$taZmienna'.

0
Patryk27 napisał(a):

Zamiast robić '$_SESSION[uid]' (wewnątrz zapytania), przypisz tę wartość najpierw do zmiennej i zrób '$taZmienna'.

to znaczy bo średnio rozumiem

1
$zmienna = $_SESSION['uid'];

... i potem użyj '$zmienna' w miejsce '$_SESSION[uid]'.

0
Patryk27 napisał(a):
$zmienna = $_SESSION['uid'];

... i potem użyj '$zmienna' w miejsce '$_SESSION[uid]'.

screenshot-20230108200726.png

że tak?

0

Prawie, prawie:

... i potem użyj '$zmienna' w miejsce '$_SESSION[uid]'.

0
Patryk27 napisał(a):

Prawie, prawie:

... i potem użyj '$zmienna' w miejsce '$_SESSION[uid]'.

screenshot-20230108201220.png

screenshot-20230108201350.png

0

Ach, no ale przecież linijka 88 to jest to pierwsze zapytanie - robisz values (null, ..., chociaż kolumna user_id nullem być nie może; dlaczego tak robisz?

0
Patryk27 napisał(a):

Ach, no ale przecież linijka 88 to jest to pierwsze zapytanie - robisz values (null, ..., chociaż kolumna user_id nullem być nie może; dlaczego tak robisz?

screenshot-20230108201843.png
screenshot-20230108201856.png

0

Hm?

0
Patryk27 napisał(a):

Prawie, prawie:

... i potem użyj '$zmienna' w miejsce '$_SESSION[uid]'.

ecommerceapp.sql

plik sql

1

No tak, masz tam:

CREATE TABLE `user_info` (
  `user_id` int(10) NOT NULL,
  -- ...
);

... a jednocześnie w swoim kodzie PHP mówisz wprost: insert into user_info (user_id, ...) values (null, ...); no nie możesz wrzucić nulla w kolumnę not null przeca.

Jeśli chcesz wykorzystać funkcjonalność autoincrement (na co wygląda), to potrzebujesz po pierwsze stworzyć pole user_id jako autoincrement, a po drugie w zapytaniu w ogóle nie podawać tej kolumny (tj. robić samo insert into user_info (first_name, email, password) values (..., ..., ...)).

0

nie rozumiem jak to zaimplementować do kodu tę funkcję

1

Musisz mieć:

CREATE TABLE `user_info` (
  `user_id` int(10) NOT NULL AUTO_INCREMENT,
  -- ...
);

(https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html)
... a w kodzie PHP musisz nie określać kolumny user_id w zapytaniu insert.

1 użytkowników online, w tym zalogowanych: 0, gości: 1