重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
由于face字段是字符型的,所以需要单引号。
成都创新互联一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供成都网站建设、做网站、成都网页设计、小程序制作、成都网站开发、成都网站制作、成都软件开发、app软件开发是成都本地专业的网站建设和网站设计公司,等你一起来见证!
$cl = 01;
$sql = 'SELECT * FROM `#@__guestbook` WHERE ischeck=1 and face='{$cl}' ORDER BY id DESC';
你刚才的截图的:$db=new
mysqli(.....);
new是初始化mysqli类的意思
你用的是类对吧
你用的是mysqli类,如果你需要把查询结果读到数组,你是不可以使用mysqli_fetch_array等函数的(因为类会把函数封装,过程函数是没办法用的)。
你只能使用你这个类里面的函数,去看看这个类应该有把查询结果读到数组的函数的。
----------------------------------------------------------------------------------------------------------------------
如果你用的是过程,那么应该这么写:
?php
mysql_connect('127.0.0.1','root','123456');
//连接数据库,主机名127.0.0.1,用户名root,密码123456
mysql_select_db('phpmyadmin');
//选择数据库phpmyadmin
$user=$_POST['uid'];
//把post的uid保存为user变量
$sql="select
*
from
userinfo
where
username='$user'";
//定义sql语句
$query=mysql_query($sql);
//执行,并保存为变量
$row=mysql_fetch_array($query);
//把执行结果保存为变量
echo
$row['sex'];
//输出一个做测试
?
如果不行,你可以把mysql换成mysqli
你说的只是php代码中可能会允许你使用注入语句,但是一般来说,网站防注入都是在链接数据库的类中加入了转换,也就是说把注入语句的关键字都加上了转义字符。比如你遇到的这种情况,就是被防注入了。
关于你这个问题:
问:输入框中的SQL语句应该如何写?
条件:数据库表、字段全已知,输入框长度不限。
我只能跟你说,你可以在输入框中加入;,/这种符号,让语句解析的时候出现问题,让php把sql语句拼合成两个或两个以上。这样你就可以在第二条语句之后加入你想要执行的命令了。
如果这种方法没有效果,你只能使用溢出的方式来注入!
$a = mysql_fetch_array(mysql_query("SELECT articleid FROM `jieqi_article_article`ORDER BY articleid DESC LIMIT 1"));
$maxid = $a['articleid'];
那么你查询数据的时候只取一条就行了
select * from table limit 10,1
或者在输出的时候设条件,如当索引为10才输出,程序将输出第11条数据
if($key == 10)
输出
参考:
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法:
LIMIT # OFFSET #。
mysql SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.
//如果只给定一个参数,它表示返回最大的记录行数目:
mysql SELECT * FROM table LIMIT 5; //检索前 5 个记录行
//换句话说,LIMIT n 等价于 LIMIT 0,n。