I have made this insert query:
$insertsuccess = $wpdb->insert(
'compservices',
array(
'orderId'=> $orderID,
'orderedTime' => $date,
'useremail' => $customerEmail,
'address' => $address ,
'mobile' => $mobile ,
'servicecenter' => $servicecentername ,
'timeslot'=> $timeSlot,
'preferredlanguage'=> $preferredLanguage,
'status'=> $orderStatus,
'completedDate'=> $orderCompletionDate,
'userissue'=> $userIssue ,
'userproduct'=> $userProduct
),
array(
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s'
)
);
var_dump( $wpdb->last_query );
//echo $wpdb->insert_id;
//$wpdb->print_error();
if($insertsuccess) {
return true;
} else {
return false;
}
The output of wpdb->last_query is:
string(423) "INSERT INTO `compservices` (`orderId`, `orderedTime`, `useremail`, `address`, `mobile`, `servicecenter`, `timeslot`, `preferredlanguage`, `status`, `completedDate`, `userissue`, `userproduct`) VALUES ('GV2016021757', '2016-02-17 23:20', '[email protected]', 'jnerjnmejnrerr', '9999999999', 'GVONE', '2016-02-18 - 09 AM to 12 PM', 'ENG', 'Ordered', NULL, '', 'kdnsjknjer')"
The actual query is
string(423) "INSERT INTO `compservices` (`orderId`, `orderedTime`, `useremail`, `address`, `mobile`, `servicecenter`, `timeslot`, `preferredlanguage`, `status`, `completedDate`, `userissue`, `userproduct`) VALUES ('GV2016021757', '2016-02-17 23:20', '[email protected]', 'jnerjnmejnrerr', '9999999999', 'GVONE', '2016-02-18 - 09 AM to 12 PM', 'ENG', 'Ordered', NULL, '<script>alert("hello")</script>', 'kdnsjknjer')"
and data inserted is
all data same as well as the script tags are also there:
<script>alert(\'hello\')</script>
The expectation was wpdb->insert will sanitize the script tags and remove it. It is showing correct in wpdb->last_query. But the data in database has script tags.
I am not able to figure out why this is happening.