php - 值未存储在 mysql 数据库中

标签 php html mysql database

我开始学习 php,但卡在某个地方。下面是我的 php 代码来展示我做了什么。我使用存储IP地址和产品ID制作了添加到购物车部分,但该值仍然没有保存数据库。如何检查代码中有什么问题?我还使用 echo mysqli_error($db) 检查了它,但没有显示。

下面是代码:

<?php 

$db = mysqli_connect("localhost","root","","ecommerce");


function getIp() {
    $ip = $_SERVER['REMOTE_ADDR'];

    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }

    return $ip;
}


function cart(){

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

        global $db;

        $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($db, $check_pro);

        if (mysqli_num_rows($run_check)>0) {
            echo "";
        } else {
            $insert_pro = "insert into cart (p_id,ip_add) values ('$pro_id','$ip')";

            $run_pro = mysqli_query($db , $insert_pro);
            echo "<script>window.open('index.php','_self')</script>";
        }
    }
}
?>

甚至添加数据库表的图像。

enter image description here

最佳答案

您需要检查几乎所有 mysqli_ api 调用的状态,请参阅我添加的 2 个检查

function cart(){

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

        global $db;

        $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($db, $check_pro);

        // test query worked and report error if it failed
        if ($run_check === false) {
            echo mysqli_error($db);
            exit;
        }

        if (mysqli_num_rows($run_check)>0) {
            echo "";
        } else {
            $insert_pro = "insert into cart 
                                  (p_id,ip_add) 
                           values ('$pro_id','$ip')";

            $run_pro = mysqli_query($db , $insert_pro);

            // test query worked and report error if it failed
            if ($run_pro === false) {
                echo mysqli_error($db);
                exit;
            }

            echo "<script>window.open('index.php','_self')</script>";
        }
    }
}

这可能会告诉您您的错误。

您可能已经使用您正在使用的 key 插入了一行

By the way: Your script is at risk of SQL Injection Attack Have a look at what happened to Little Bobby Tables Even if you are escaping inputs, its not safe! Use prepared statement and parameterized statements

关于php - 值未存储在 mysql 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38371965/

相关文章:

C# RSA 加密 -> Laravel phpseclib 解密()

php - Tumblr API V2 错误代码 429 : "Rate Limit Exceeded" You are being rate limited, 速度变慢。标题信息?

html - 为什么我的导航栏链接是垂直显示的而不是水平显示的?

mysql - MySQL启动时重置的临时变量

MySQL 搜索查询?

php - 如何在 while 循环中对 ID 进行分组(对于 php json_encode)

php 使用 preg 自定义解析字符串

javascript - 将 javascript 数组解析为具有相同类名的适当输入字段

javascript - CSS 过渡不适用于 IE11

php - MySQL 查询仅生成负日差异