插入零而不是值[Insert Query Using Prepare statement]


Zero is inserted instead of the values [Insert Query Using Prepare statement]

如何使用prepare和bind向mysql数据库插入varchar类型

下面是我准备 的代码
$ins_filter = $con->prepare("INSERT INTO http_filter ( filter_id , filter_name , created_by , src_ip_address_from , src_ip_address_to , src_mac_address , des_ip_address_from , des_ip_address_to , des_mac_address , website_name , content_type , timestamp_start , timestamp_end , sql_q ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

绑定
$ins_filter->bind_param("isiiisiissssss",$filter_id,$filter_name, $creat_by,$sourceip,$destip,$smaf,$dia_sourceip,$dia_destip,$dmaf,$url_address,$content_type,$start_time, $end_time,$f_data_slash);
$ins_filter->execute();

模式:
Filter_id是int
filter_name varchar
Creat_by是varchar
在数据库表中输入ip地址如10.10.10.1返回0而不是ip地址
尽管是varchar
Smaf是varchar
Dia_sourceip是varchar
Dia_destip是varchar
Dmaf是varchar
Url_address是varchar
内容类型为varchar,
Start_time is varchar
End_time = varchar
F_data_slash is varchar

问题:

插入时,如果插入文本值,则存储在db中,但当插入ip地址(如10.10.10.1)时,则存储在db中。

bind_param支持4种类型
我int
d双
年代字符串
B blob

我应该使用什么来支持整数和字母的值?

如何使用prepare和bind向mysql数据库插入Varchar类型

必须使用"s"类型修饰符。

如果使用了这个修饰符,但是仍然插入了0,那么您的问题与预处理语句无关。要么是输入数据,要么是数据库中的字段类型,您必须仔细检查。