index.php
<?php
if(get_magic_quotes_gpc()) //关闭php的魔术引号功能。
{
$process = array(&$_GET,&$_POST,&$_COOKIE,&$_REQUEST);
while(list($key,$val) = each($process))
{
foreach($val as $k => $v)
{
unset($process[$key][$k]);
if(is_array($v))
{
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
}
else
{
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
} //关闭php的魔术引号功能。
if (isset($_GET['addjoke']))
{
include 'form.html.php';
exit();
}
//建立连接对象
try
{
$pdo = new PDO('mysql:host=localhost;dbname=test','testuser','pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //setAttribute PDO对象的方法,PDO::表示这些变量是我们所使用的PDO的一部分,不是PHP语言自身内建的变量。想要将控制错误模式的PDO属性(PDO::ATTR_ERRMODE)设置为抛出异常的模式(PDO::ERRMODE_EXCEPTION)。
$pdo->exec('SET NAMES "utf8"'); //配置数据库连接的字符码。
}
catch (PDOException $e)
{
$error = '数据库连接失败!'.$e->getMessage();//从MySql服务器获取一条详细的错误信息
include 'error.html.php';
exit();
}
if (isset($_POST['joketext']))
{
try
{
$sql = 'INSERT INTO joke SET
joketext = :joketext,
jokedate = CURDATE()'; //CURDATE()返回当前日期为'YYYY-MM-DD“或YYYYMMDD格式的值
$s = $pdo->prepare($sql); //将查询发送给mydql服务器,要求他准备好运行该查询。返回一个PDOStarement的对象。
$s->bindValue(':joketext',$_POST['joketext']); //发送给他所却的值。
$s->execute(); //调用个PDOStarement的方法来告诉mysql服务器,使用我们提供的值来执行查询
}
catch (PDOException $e)
{
$e->getMessage();
include 'error.html.php';
exit();
}
header('Location:.');//PHP header函数提供发送特殊服务器响应的方法,表示一次重定向,(.)为重新加载当前目录。
exit();
}
try
{
$sql = 'SELECT * FROM joke';
$jieguo = $pdo->query($sql); //query 返回一个PDOStarement的对象,该对象表示一个结果集。
}
catch(PDOException $e)
{
$error = '获取内容失败: '.$e->getMessage();
include 'error.html.php';
exit();
}
while($aaa = $jieguo->fetch()) //while用来处理大量的数据,fetch将数据集中的下一行作为一个数组返回。
{
$jokes[] = $aaa['joketext']; //将每个值存储为数组$jokes中的一个相
}
include 'joke.html.php';
?>
form.html.php
<title>add-form</title>
<style type="text/css">
textarea {
display:block; /*是让对象成为块级元素(比如a,span等)*/
width:100%; /*段落的宽度*/
}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="?"> <!--在提交表单时可以从URL红将查询字符串分离出来-->
<div><label>添加新的内容:</label></div>
<div><textarea cols="40" rows="3" id="joketext" name="joketext"></textarea></div>
<div><input name="" type="submit" value="添加"/>
</div>
</form>
</body>
</html>
joke.html.php
<body>
<table width="200" border="1">
<tr>
<th scope="col">笑话详情</th>
</tr>
<?php foreach ($jokes as $joke): ?>
<?php echo '<tr><td>'.htmlspecialchars($joke,ENT_QUOTES,'UTF-8').'</td></tr>'; ?>
<?php endforeach; ?>
</table>
<div class="aa"><a href="?addjoke">添加</a></div>
</body>
exec与execute的区别,对象不同,exec是对象PDO的方法,execute是PDOStarement的方法。
转载于:https://blog.51cto.com/lionduke/1829938