我无法在这里找到我犯错误的地方:当我使用sprintf
进行此特定查询时,我无法将数据插入数据库,而其他人可以!
now()的数据类型和下面的0值是否正确?
$query2=sprintf("INSERT INTO usrinfo (UUID,Name,Phone,Email,Postcode,DateReg,Reputation,ReviewPlus,ReviewNeg,Sex,Status,ContactPermissions)VALUES('%s','%s','%s','%s','%s','%s','%u','%u','%u','%s','%u','%u')",$unique_id,$name,$phone,$email,$postcode,now(),0,0,0,$gender,0,$permission);
$insert2=mysqli_query($conn,$query2)or die(mysqli_error($conn))
但是当我不使用sprintf时,它可以工作!以下是没有sprintf
$query2="INSERT INTO usrinfo (UUID,Name,Phone,Email,Postcode,DateReg,Reputation,ReviewPlus,ReviewNeg,Sex,Status,ContactPermissions) VALUES('$unique_id','$name','$phone','$email','$postcode',now(),'0','0','0','$gender','0','$permission')";
答案 0 :(得分:-1)
您在字符串中定义的数据类型不匹配,请参阅下面用于定义不同数据类型的不同参数列表: -
%
- 字面百分比字符。不需要参数。
b
- 将参数视为整数,并以二进制数表示。
c
- 该参数被视为一个整数,并表示为具有该ASCII值的字符。
d
- 该参数被视为一个整数,并以(带符号)十进制数表示。
e
- 该论点被视为科学记数法(例如1.2e + 2)。精度说明符代表之后的位数
PHP 5.1.1以来的小数点。在早期版本中,它被视为
有效位数(少一个)。
E
- 与%e类似,但使用大写字母(例如1.2E + 2)。
f
- 将参数视为浮点数,并显示为浮点数(可识别语言环境)。
F
- 将参数视为浮点数,并显示为浮点数(非区域设置)。从PHP 4.3.10起可用
和PHP 5.0.3。
g
- 较短的%e和%f。
G
- 较短的%E和%f。
o
- 该参数被视为一个整数,并以八进制数表示。
s
- 将参数视为字符串并以字符串形式显示。
u
- 该参数被视为一个整数,并以无符号十进制数表示。
x
- 该参数被视为一个整数,并以十六进制数字表示(带小写字母)。
X
- 该参数被视为一个整数,并以十六进制数字表示(使用大写字母)。