【问题标题】:How do I echo name, price and id from a form just submitted?如何从刚刚提交的表单中回显名称、价格和 ID?
【发布时间】:2017-01-02 18:04:35
【问题描述】:

我对 MySQLi 和 PHP 有疑问。

我创建了一个表单,一旦我输入所需的值并点击提交,这些值就会立即发送到数据库。这没有错。

我想要发生的是:点击提交按钮后,PHP 将回显刚刚提交的条目的结果。也就是说:

   `INSERT INTO table VALUES (x, x, y) -> SELECT x, x, y FROM table ORDER BY id DESC LIMIT 1`

我尝试了很多方法来做到这一点,但所有方法要么回显上一个条目(刚刚提交的条目之前的那个),要么根本不起作用。

我已经尝试过 mysqli_insert_id($conn) 但这没有返回任何内容。

这是我的代码目前所在的位置:

    $conn = mysqli_connect($server, $user, $pw, $BD);
    if (!$conn) {
        die ('<span style="color: #FF0000;">"connection failed: "</span>' .  mysqli_connect_error());
    }

    $nome = $_POST['nome'];
    $preco = $_POST['preco'];

    $query = "INSERT INTO produtos(nome, preco) VALUES ('$nome', '$preco')";
    $result = mysqli_insert_id($conn);
    var_dump ($result);

    if (mysqli_query($conn, $query)){
        echo '<br>'."Succeeded!";
    } else {
        echo '<br>'."ERROR!" .'<br>'. $query ."<br>". mysqli_error($conn) .'<br><br>'. '<span style="color: #FF0000;">You have to fill all the fields.</span>';
    }

    mysqli_close($conn); 

请注意,如果有任何帮助,var_dump 目前会输出 int(0)。 提前致谢。我一直在为此苦苦挣扎。

【问题讨论】:

  • 不执行查询就无法获得mysqli_insert_id!!
  • @Saty 好的,修好了!现在mysqli_insert_id 起作用了。但是,它仍然从最后一个条目之前的条目返回 id。

标签: php forms mysqli


【解决方案1】:

如果没有executing 查询,您将无法获得mysqli_insert_id。最好使用prepare statement来防止sql注入

 $stmt = $conn->prepare("INSERT INTO produtos(nome, preco) VALUES (?,?)");
    $stmt->bind_param('ss', $nome, $preco);
    $stmt->execute();// execute query
    $conn->insert_id;// get last insert id

【讨论】:

    【解决方案2】:

    请注意,您甚至还没有执行查询。附带说明一下,您应该注意 SQL 注入并遵循以下模式:

    $nome  = mysqli_real_escape_string($conn, $_POST['nome']);
    $preco = mysqli_real_escape_string($conn, $_POST['preco']);
    
    $sql    = "INSERT INTO produtos (nome, preco) VALUES ('".$nome."', '".$preco."')";
    $query  = mysqli_query($conn, $sql) or die(mysqli_error($conn));
    $result = mysqli_insert_id($conn);
    
    echo $result; // Check your result.
    

    【讨论】:

    • 这行得通。但是,这些值被重复上传到数据库,并且正在返回最高 ID 之前的值。我该如何解决这个问题?
    • @PauloSoares 请记住,Stack Overflow 不是支持论坛。尝试自己解决问题。万一你卡住了,问一个问题,而不是仅仅把你的问题告诉别人必须为你解决。
    • @YourCommonSense 知道了。
    【解决方案3】:

    使用这个:

    $query = "INSERT INTO produtos(nome, preco) VALUES ('$nome', '$preco')";
    $res=mysqli_query($conn,$query);
    $result = mysqli_insert_id($conn);
    var_dump ($result);`
    

    【讨论】:

    • 这包含来自原帖的 SQL 注入漏洞 - 使用不安全!
    猜你喜欢
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多