My web service executes this code correctly without any errors:
$db = mysqli_connect("localhost", $id, $pw, $dbName);
$query = "INSERT INTO {$tableName} ";
$query .= "(id, name, address, telephone) VALUES (";
$query .= "{$id},'";
$query .= trim($postData->name) ."','";
$query .= trim($postData->address) ."','";
$query .= trim($postData->telephone) ."')";
$queryResult = mysqli_query($db, $query);
However, attempting the same with prepared statements throws an error:
$db = mysqli_connect("localhost", $id, $pw, $dbName);
$query = "INSERT INTO {$tableName} ";
$query .= "(id, name, address, telephone) VALUES (?, ?, ?, ?)";
$statement = mysqli_prepare($db, $query);
if ($statement) {
mysqli_stmt_bind_param($statement, 'isss',
$id,
trim($postData->name),
trim($postData->address),
trim($postData->telephone));
mysqli_stmt_execute($statement);
$queryResult = mysqli_stmt_get_result($statement);
}
// error:
// mysqli_stmt_get_result() expects parameter 1 to be mysqli_stmt, boolean given
// mysqli_prepare fails and returns a false instead of the prepared object
Why is mysqli_prepare()
failing here?