标签为 ‘PHP’

MySQL在PHP的简单应用(三)

再次出现SB问题。。。郁闷。。。加上心情不是很好,导致这个问题让我想杀人。。。
在写一个HTML表单,想实现提交表单修改数据库的功能,但是出现表单可以提交,而数据却无法被修改的现象。
1、写一个表单。
<form name=”edit” action=”edit.php” method=”post” >
修改你的名字:
<input type=”text” name=”name”  size=”11″ /><br />
修改你的密码:
<input type=”password” name=”pwd” size=”11″ /><br />
<input type=”submit” name=”submit” value=”点此修改”/>
2、在edit.php文件中调用$_POST[]数据。
$name = $_POST[name];
$pwd = $_POST[pwd];
3、建立SQL语句,进行数据修改,并用if判断表单是否已经提交。
if($_POST[submit]){
$sql = “UPDATE user SET name=’$name’,pwd=’$pwd’ WHERE id=’$id’;”;
$result =mysql_query(“$sql”);}
if($result){
echo “<br/>资料修改成功”;
}
4、当点击HTML表单的提交按钮后,跳转到edit.php页面,并显示“资料修改成功”!这就说明$sql语句已经被成功执行,但是在数据库中却未发现数据被修改。
5、又瞎整了两个多小时,发现一个很弱智的地方,在WHERE后面有一句id=’$id’,但是这个edit.php页面并没有$id变量,这就是问题的关键所在。
6、返回文件顶部,将$id=$_COOKIE[id];加入,再次测试,成功。

MySQL在PHP的简单应用(二)

在昨天那篇《MySQL在PHP的简单应用》中,说到可以用mysql_fetch_array()来返回下一行所有的值域,然后再通过变量数组下标进行调用。
今天又google了一下,发现mysql_fetch_row()函数可以只返回某一个字段的值而不必返回整行的值,所以我们可以只查询匹配的单个字段,并将值用mysql_fetch_row()来返回。
1、$sql = “SELECT name FROM user WHERE id=$_POST[id]“; //查找与提交表单id相同的数据的姓名字段
2、执行查询并将查询结果赋给变量$result = @mysql_query($sql);
3、$segment = mysql_fetch_row($result); //返回查询结果的字段值,并赋给$segment变量
4、if($_POST[id]==”$row[id]“)
{  if($_POST[psw]==$row[psw])
{  echo “Welcome,$segment[0].”;
}
}  //判断提交表单的id号是否存在于数据库中,如果存在再判断密码是否正确,如果正确,显示“Welcome 姓名”。
跟上一篇相比,只是纯粹的把mysql_fetch_array()替换成了mysql_fetch_row()函数,值得注意的是,虽然mysql_fetch_row()函数返回的是单个字段的值,但是在调用该值的时候还是需要用下标[0]来调用,否则显示的将是”Array”。

MySQL在PHP的简单应用

今晚瞎折腾了两个多小时,把一个巨简单的问题给复杂化了,做了许多无用功。在这里记下来,希望其他朋友如果遇到相同问题不要重蹈覆辙。
在写一个登录入口的时候,想要在登陆成功后提示登陆者者的姓名,而登录名使用的是id号,所以想到可以利用查找数据库中与id号匹配的那条记录的姓名。
1、建立数据库查询$sql = “SELECT * FROM user”;
2、执行查询并将查询结果赋给变量$result = @mysql_query($sql);
3、$row = mysql_fetch_array($result);  //mysql_fetch_array()函数返回查询结果下一行的所有值域,并将其保存至$row变量中,如果没有行时,mysql_fetch_array()则返回FALSE。
4、if($_POST[id]==”$row[id]“)
{  if($_POST[psw]==$row[psw])
{  echo “Welcome,$row[name].”;
}
}  //判断提交表单的id号是否存在于数据库中,如果存在再判断密码是否正确,如果正确,显示“Welcome 姓名”。
其实核心问题就在于mysql_fetch_array()这个函数,因为它保存了整一行的值域而不是单个字段的值,所以当我试图用mysql_fetch_array来返回单个字段时候,提示出错。

PHP初学之路——cookie问题

为了写数据库的课程,所以开始神速般的学习PHP。原因很简单,PHP+MySQL很方便。
把PHP的基本概念看完了,跟C的语法有点像(其实跟其他语言都有点像),据说是集C和Perl的优点,管他呢,反正Perl我也不会,无所谓只要能写出网站就行。
第一个测试项目是留言本(话说怎么学PHP的第一次都做留言本啊~>_<~),但是在一个小地方出了点问题。
我写了一个head.php,很简单,里面只包含了“首页index.php”、“写留言write.php”和“登陆login.php”三个链接。
在写login.php的时候,用了一条语句include (“head.php”)。
初看是没有什么问题的,但是不幸我把这语句放在了文件的顶部,在其之后写了setcookie的退出和setcookie的登陆。
在调试登录的时候,不管如何都无法成功,给出的提示如下:
Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\guestbook\head.php:7) in C:\xampp\htdocs\guestbook\login.php on line 13

这个提示应该是说头部信息出错,但是不知道怎么错,于是我把include(“head.php”)一句暂时注释掉,这时候居然成功登录了!
google了一下相关资料,发现在PHP里Cookie的使用是有一些限制的:
1、使用setcookie必须在<html>标签之前
2、使用setcookie之前,不可以使用echo输入内容
3、直到网页被加载完后,cookie才会出现
4、setcookie必须放到任何资料输出浏览器前,才送出

看到第一条的时候突然醒悟,我的head.php就是用<a href=url></a>这样的标签来写的,所以cookie无法建立。

  • Remember Me