无法使用sprintf将数据插入mysql

时间:2015-04-29 06:39:15

标签: php mysql

我无法在这里找到我犯错误的地方:当我使用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')";

1 个答案:

答案 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 - 该参数被视为一个整数,并以十六进制数字表示(使用大写字母)。