2017-08-11 125 views
0

我有一個用戶註冊表單 ,然後插入到數據庫但其拋出了一個綁定PARAM錯誤bind_param問題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('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(); 
    } 

我修改了查詢,現在已經被傳遞 瓦爾正確的金額不過現在沒有顯示出錯誤,但也可以作爲你的援助autocremented只是查詢改變這一點,沒有必要不插入數據

+1

錯誤信息是? –

+0

該SQL無效,因此您的準備工作可能會失敗。我可以猜出錯誤。 '(,?,?,?,?,?,?,?,?,?,?,?,?'缺少結尾括號和開頭後的內容。 –

回答

0

將其插入查詢中。

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

剛剛添加的結尾括號代碼) 此外,援助是一個自動遞增值,不會在查詢中傳遞,所以?仍然需要存在? – Chris

+0

好吧,如果援助是自動克隆,不需要插入,讓SQL執行該任務。查詢到我發佈的更新後的查詢 –

+0

完美謝謝...不知道爲什麼,但是當我離開$ _POST ['aid']時,即使t不傳遞數據,查詢也不會起作用 只要我刪除它從查詢&存儲參數它工作正常 這是令人沮喪的!謝謝:) – Chris

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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
0

你試圖插入15列

1)援助

2)affname

3)標題

4)FNAME

5)lname的

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 ['country'],$ _ POST ['pcode'],$ _ POST ['email'],$ _ POST ['password'],$ _ POST ['paymethod']

+0

我給了更新的查詢等,雖然沒有錯誤現在顯示,但沒有被存儲 – Chris