запрос вставки mysqli, возвращающий false - PullRequest
0 голосов
/ 30 октября 2018
function cart() {

    if(isset($_GET['add_cart'])){

        global $connect;

        $ip = getIp();
        $pro_id = $_GET['add_cart'];
        $check_pro = "SELECT * FROM cart WHERE ip_add = '$ip' AND p_id = '$pro_id'" ;
        $run_check = mysqli_query($connect, $check_pro);

        if(mysqli_num_rows($run_check)>0){
            echo "do a thing";
        }else {
            $insert_pro = "insert into cart (p_id,ip_add) values ('$pro_id','$ip')";
            $run_pro = mysqli_query($connect, $insert_pro);
            if($run_pro){
                echo "<script>window.open('index.php','_self')</script>";
            }
        }

    }

enter image description here

Скорее всего, я упускаю что-то настолько очевидное, поэтому заранее спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Столбец qty не имеет значения по умолчанию, и вы не указываете его значение при вставке новой строки. Это приведет к ошибке. Вам необходимо указать значение, например, 0.

Кроме того, поскольку p_id является столбцом INT, вам не нужно указывать значение в кавычках.

$insert_pro = "insert into cart (p_id,ip_add, qty) values ($pro_id,'$ip', 0)";

Но лучше было бы использовать подготовленный оператор для защиты от внедрения SQL.

$insert_pro = $connect->prepare("insert into cart (p_id,ip_add, qty) values (?, ?, 0)");
$insert_pro->bind_param("is", $pro_id, $ip);
$run_pro = $insert_pro->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...