函数中常见设置数值的格式
- b表示二进制整数
- s表示字符串
- d表示十进制整数
- c表示ascii整数
- o表示八进制整数
- u表示无符号十进制整数
- f表示浮点数
- x表示十六进制整数
- e表示科学计数
<html>
<head>
<meta http-equiv="content-type" charset="utf-8" />
</head>
<body>
<?php
//连接数据库失败以后,使用die结束程序
$dbc = @mysqli_connect('localhost','root','gonglishan520','xsphpdb') or die('<p>could connect database</p>');
//这里先判断是否提交过来,然后判断有没有数据
if(isset($_POST['submitted']) && !empty($_POST['task'])){
//判断是否有父路径
if(isset($_POST['parent_id'])){
//进行强制类型转换,确保parent_id是个整数
$parent_id = (int)$_POST['parent_id'];
}else{
$parent_id = 0;
}
/*
*使用mysqli_real_escape_string处理提交的字符串,确保其安全
*使用sprintf来连接sql语句,使得语句更简洁,更易于调试
*/
$q = sprintf("insert into tasks(parent_id,task) values(%d,'%s')",$parent_id,mysqli_real_escape_string($dbc,$_POST['task']));
$r = mysqli_query($dbc,$q);
//确保操作成功
if(mysqli_affected_rows($dbc) == 1){
echo '<p>the task has been added!</p>';
}else{
echo '<p>the task could not be added!</p>';
}
}
echo '<form action="test.php" method="post">
<fieldset>
<legend>add a task</legend>
<p>task:<input name="task" type="text" size="60" maxlength="100"></p>
<p>parent task:<select name="parent_id"><option value="0">none</option>
';
$q = 'select task_id,parent_id,task from tasks where date_completed="0000-00-00 00:00:00" order by date_added asc';
$r = mysqli_query($dbc,$q);
$tasks = array();
while(list($task_id,$parent_id,$task) = mysqli_fetch_array($r,MYSQLI_NUM)){
echo "<option value=\"$task_id\">$task</option>\n";
$tasks[] = array('task_id'=>$task_id, 'parent_id'=>$parent_id, 'task'=>$task);
}
echo '</select></p>
<input name="submitted" type="hidden" value="true">
<input name="submit" type="submit" value="add this task">
</form>
</fieldset>
';
function parent_sort($x,$y){
return ($x['parent_id'] > $y['parent_id']);
}
//用户自定义排序方法
usort($task,'parent_sort');
echo '<h3>current to do list</h3><ul>';
foreach($tasks as $task){
echo "<li>{$task['task']}</li>\n";
}
echo '</ul>';
?>
</body>
</html>
如果想在字符串中表示百分号,就再添加一个百分号对其进行转义
printf('the tax rate is %0.2f%%', $tax);