Ahmed
Ahmed

Reputation: 71

MySQLi prepared statement not binding integer

I'm new to prepared statements. Sql query is working fine if i insert dummy data and it is working without binding the integer($id).

Where am i wrong?

sql = "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?;";
$stmt = mysqli_stmt_init($conn);
mysqli_stmt_prepare($stmt, $sql));      
mysqli_stmt_bind_param($stmt, "ssi", $type, $desc, $id);        
mysqli_stmt_execute($stmt);

Upvotes: 0

Views: 872

Answers (4)

Ahmed
Ahmed

Reputation: 71

I found the error which cause the integer parameter to not bind. I didn't know that disabled input fields cannot post data, therefore i found a solution to replace the 'disabled' attribute with 'readonly'.

Upvotes: 2

akinlex
akinlex

Reputation: 23

Try this

$sql= $con->prepare("update staff_type set s_type=?, description=?  WHERE s_type_id = ?");
if ($result){
$sql->bind_param('ssi', $s_type, $desc, $s_type_id );
$sql->execute();  
}

side note: s represents string while i represents integer

Hope this helps you

Upvotes: 0

Krish
Krish

Reputation: 387

You have to Prepare Statement first

**Procedural style**
$stmt = mysqli_prepare($conn, "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?");
mysqli_stmt_bind_param($stmt, "ssi", $type, $desc, $id); 
mysqli_stmt_execute($stmt);

check http://php.net/manual/en/mysqli-stmt.bind-param.php

Upvotes: 0

RiggsFolly
RiggsFolly

Reputation: 94672

Before binding parameters you have to Prepare an SQL statement with parameters in it.

$sql = "UPDATE staff_type SET s_type=?, description=? WHERE s_type_id=?;";
$stmt = $conn->prepare($sql);       
$stmt->bind_param("ssi", $type, $desc, $id); 
$stmt->execute();

Upvotes: 1

Related Questions