mysql_query()执行之后没有结果,数据库中为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql_query()执行之后没有结果,数据库中为空相关的知识,希望对你有一定的参考价值。

下面是连接数据库文件:
<?php
$conn = @ mysql_connect("localhost", "root", "325327") or die("数据库链接错误");
mysql_select_db("bbs", $conn);
mysql_query("set names 'GBK'"); //使用GBK中文编码;
?>
添加信息页面:
<?php
include ("conn.php");
if($_POST['submit'])
$sql="insert into message(user,title,content,lastdate)values('$_POST[user]','$_POST[title]','$_POST[content]')";
mysql_query($sql);
echo "发表成功!";

?>
<form action="add.php" method="post" >

用户:
<label>
<input type="text" name="user" />
</label>
<p>标题:
<label>
<input type="text" name="title" />
</label>
</p>
<p>内容:

<textarea name="content" /></textarea><br>

<input type="submit" name="submit" value="发布留言" />

</p>
</form>
我用的环境是zend studio
数据库中事先建好了数据
还有运行代码
<?php
include ("conn.php");
?>

<html><?php $sql="select *from message";
$query=mysql_query($sql);
while ($row=mysql_fetch_array($query))

?>
标题:<?php $row[title]?>用户:<?php $row[user]?>内容:<?php $row[content]?><br>
<?php ?>

</html>
运行结果如下:
标题:用户:内容:
标题:用户:内容:
标题:用户:内容:
标题:用户:内容:
就是没有数据,数据库中明明有数据

参考技术A 啊。。。

<?php echo $row[title]?>用户:<?php echo $row[user]?>内容:<?php echo $row[content]?>

注意 echo啊。。。

insert into message(user,title,content,lastdate)
values('$_POST[user]','$_POST[title]','$_POST[content]')

我想问下, 你的“lastdate” 字段在什么地方,数据里有嘛,

根本就没有嘛,,那怎么插入成功呢
参考技术B 添加信息页面:
<?php
include ("conn.php");
if($_POST['submit'])
$sql="insert into message(id user,title,content,lastdate)values(null,'$_POST[user]','$_POST[title]','$_POST[content]')";
$rs=mysql_query($sql);
if($row=mysql_affected_rows($conn)>0)
echo "发表成功!";


?>

此处 主要是 数据库 没有主见 Id 字段,以及判断是否插入成功。
<html><?php
$sql="select *from message";//此处不能和PHP头写一起
$query=mysql_query($sql);
while ($row=mysql_fetch_array($query)) ?>
标题:<?= $row[title]?>用户:<?= $row[user]?>内容:<?=$row[content]?><br>
<? ?>
OK就这样就行了本回答被提问者采纳
参考技术C RW

SQL注入

宽字节注入
mysql_query("SET NAMES ‘gbk‘");//设置字符集编码,对数据库执行之后的结果进行某种编码(gbk)然后传递给用户,返回gdk编码的结果
mysql_set_charset("GBK");//设置字符集编码,规定当与数据库服务器进行数据传送时要使用的默认字符集
mysql_real_escape_string()对参数进行过滤转移,其类似功能的函数
 
GBK编码,针对汉字的一种编码方式,使用两个字节编码一个汉字
漏洞形成原理:对数据库执行之后的结果进行gbk编码+执行过滤函数对用户提交的数据进行过滤=宽字节
测试步骤:
step1:访问站点../gbksql/01/?id=1‘查看返回结果:select* from news where tid=‘1",执行结果不受影响
step2:../?id=1%df(为啥使用df?高位在81以后就能用,81~fe)1%df--->1%df-->
step3:测试sql注入的位置
 
PDO宽字节注入:
pdo:连接数据库-》设置模板
$id=addslashes($id);
    $conn=new PDO("mysql:host=localhost;dbname=dvwa;chartset=utf-8;port=3306","root","root") or die("error");
    $conn->exec("set names ‘GBK‘");
$result_sql=$conn->prepare("select * from users where user_id=?");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
二次编码注入:浏览器会对from提交的数据处理之后进行urldecode
1%25%27
进入后端php第一次解析为1%27
处理数据
之后因为程序编写的问题又进行了urldecode
变成1‘

以上是关于mysql_query()执行之后没有结果,数据库中为空的主要内容,如果未能解决你的问题,请参考以下文章

查询Mysql表之后将结果转换为json时如何能够保持字段的原有数据类型?

SQL注入

php执行sql查询,输出结果只有1条!?

回显mysql_query的所有结果[重复]

为啥mysql_query需要一个变量来执行?

PHP中如何判断SQL语句是不是成功执行?