bind_param问题PHP编写的Insert语句

时间:2017-08-11 09:20:38

标签: php prepared-statement bindparam

我有一个用户注册表单 然后插入db然后它抛出一个绑定参数错误

if(isset($_POST['submit'])){
// Login Query
// Connection
$mysqli = new mysqli("localhost", "root", "", "pg");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
// Query 
$query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('ssssssssssssss',$_POST['affname'],$_POST['title'],$_POST['fname'],$_POST['lname'],$_POST['add1'],$_POST['add2'],$_POST['add3'],$_POST['city'],$_POST['county'],$_POST['country'],$_POST['pcode'],$_POST['email'],$_POST['password'],$_POST['paymethod']); // If 2x Variables are used etc 's' would become 'ss',$_GET['VAR'],$_GET['VAR']
// Bind Results
$stmt->execute();
//$result = $stmt->get_result()->fetch_all();
}

我无法解决什么错误,任何人都可以提供帮助 感谢

更新表格&查询代码

        <form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    <p>
    <label for="textfield"></label>
    <input type="text" name="affname" id="textfield" />
    </p>
    <p>
    <label for="textfield"></label>
    <input type="text" name="title" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="fname" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="lname" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="add1" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="add2" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="add3" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="city" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="county" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="country" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="pcode" id="textfield" />
    </p> <p>
    <label for="textfield"></label>
    <input type="text" name="email" id="textfield" />
    </p>
    <p>
    <label for="textfield"></label>
    <input type="text" name="password" id="textfield" />
    </p>
    <p>
    <label for="textfield"></label>
    <input type="text" name="paymethod" id="textfield" />
    <input type="hidden" value="" name="aid" />
    </p>
    <p>
    <input type="submit" name="submit" id="submit" value="Submit" />
    </p>
    </form>
    <?php
    if(isset($_POST['submit'])){
    // Login Query
    // Connection
    $mysqli = new mysqli("localhost", "root", "", "pg");
    if ($mysqli->connect_errno) {
      echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
    // Query 
    $query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param('sssssssssssssss',$_POST['aid'],$_POST['affname'],$_POST['title'],$_POST['fname'],$_POST['lname'],$_POST['add1'],$_POST['add2'],$_POST['add3'],$_POST['city'],$_POST['county'],$_POST['country'],$_POST['pcode'],$_POST['email'],$_POST['password'],$_POST['paymethod']); // If 2x Variables are used etc 's' would become 'ss',$_GET['VAR'],$_GET['VAR']
    // Bind Results
    $stmt->execute();
    //$result = $stmt->get_result()->fetch_all();
    }

我修改了查询,现在传递了正确数量的变量 但它现在显示NO错误但也不插入数据

3 个答案:

答案 0 :(得分:1)

  

更改

$query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  

到:

$query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  

$query = "INSERT INTO `affiliates` (affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

答案 1 :(得分:0)

由于您的帮助是自动修改的,只需将查询更改为此,无需在查询中插入。

$query = "INSERT INTO affiliates (affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

答案 2 :(得分:0)

您尝试插入15列

1)辅助

2)affname

3)标题

4)FNAME

5)L-NAME

6)ADD1

7)ADD2

8)ADD3

9)城市

10)县

11)国家

12)的pcode

13)电子邮件

14)密码

15)paymethod

but here you are metioning only 14
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 
,?,?,?,?,?,?,?,?,?,?, ?, ?, ?, ?
 s s s s s s s s s s  s  s  s  s

以及此处只有14

$ _ POST [ 'affname'],$ _ POST [ '标题'],$ _ POST [ 'FNAME'],$ _ POST [ 'L-NAME'],$ _ POST [ 'ADD1'],$ _ POST [ 'ADD2'] ,$ _ POST [ 'ADD3'],$ _ POST [ '城市'],$ _ POST [ '县'],$ _ POST [ '国家'],$ _ POST [ 'P码'],$ _ POST [ '电子邮件'],$ _POST [ '密码'],$ _ POST [ 'paymethod']