开发者社区> 问答> 正文

使用mysqli插入数据?mysql

该代码通过所有调试,但是由于某种原因,它仍然没有插入。它尝试检查用户名是否已存在于数据库中,如果不存在,则将其添加。由于某种原因,它仍然不会将其添加到数据表中。它确实到达了插入部分,但没有添加行。

prepare("SELECT * FROM UserData WHERE username = ?"); $stmt->bind_param('s', /*$_POST["username"]*/ $username ); $username = 'hi'; $stmt->execute(); $stmt->store_result(); echo "debug 2"; if ($stmt->num_rows == 0){ // username not taken echo "debug 3"; $stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)"); $password =(/*$_POST["password"]*/ "hey"); $username =(/* $_POST["username"]*/ "hi"); $stmt2->bind_param('s',$username); $stmt2->bind_param('s',$password); $stmt2->execute(); if ($stmt2->affected_rows == 1){ echo 'Insert was successful.'; }else{ echo 'Insert failed.'; var_dump($stmt2); } }else{ echo 'That username exists already.';} ?>

展开
收起
保持可爱mmm 2020-05-17 12:53:39 572 0
1 条回答
写回答
取消 提交回答
  • 您应将所有变量绑定一次,bind_param()而不应绑定两次或N次。正确的方法是先传递类型,然后传递变量。

    更改:

    $stmt2->bind_param('s',$username); $stmt2->bind_param('s',$password); 通过

    $stmt2->bind_param('ss',$username, $password); 使用php5.6> =,您可以传递带有...运算符的数组以简化操作。

    $data = array('user' => 'someUser', 'password' => 'secret'); $stmt2->bind_param('ss', ...$data);来源:stack overflow

    2020-05-17 12:53:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像