-
你给的**$nowlongitude最大值两边的双引号都是中文双引号,不知道是你弄错了,还是**就是这样。
此外,您可以直接引用链接,而无需添加字符串。
sql = "select * from er_member where geo_longitude<=$nowlongitude_max and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
-
首先打印$nowlongitude max是否有值,然后既然是数值,那为什么要加单引号,去掉单引号,$sql="select * from er_member where geo_longitude<='“ .nowlongitude_max. ”and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
如果仍然不起作用,请打印 SQL 语句并直接在数据库中运行它以查看错误是什么。
-
您没有弄清楚 SQL 语句的语法。
如果字段是数字(如 int bigint),则不要在值两边加上引号。
你可以直接用 109 替换它来查询它,所以它应该是这样的,对吧?
sql = "select * from er_member where geo_longitude<=109 and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
如果你说有一个变量是无法查询的,$nowlongitude max 是一个数值,那么你的 SQL 在运行后应该变成这样:
sql = "select * from er_member where geo_longitude<='109 ' and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
亲眼看看这两个 SQL 语句之间有什么区别?
-
目视检查是中英文符号的问题,修改后:
sql = "select * from er_member where geo_longitude<=" .$nowlongitude_max." and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
这里”。nowlongitude_max.“的双引号是中文的,所以房东在不加单引号的情况下会报错,但是加双引号后,比如$nowlongitude max=109,变量的值是"109",这就是我找不到它的原因。
-
首先,你的 $nowlongitude max 是一个任务,所以你以后不需要使用它。 第二个是确保成功分配了$nowlongitude最大值,或者成功接收了内容。
sql = "select * from er_member where geo_longitude<='$nowlongitude_max' and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
将 SQL 语句替换为如下所示。
-
SQL中处理的数据一般是PHP处理的数据,可以直接用SQL写入变量传递,但客户端传递的PHP变量必须经过严格的过滤才能写入SQL。
正确的形式应该是:" select * from user where ll_user=‘$id’ ";
-
如果这样写,它不会被解析为你想要的值,所以你应该写它。
select * from user where ll_user='.$id.' "。
-
"select * from user where ll_user=‘$id’“
只需将鸽子替换为直接变量即可。
-
你说的是 php 可能允许你使用注入语句,但一般来说,反注入会向链接到数据库的类添加转换,即在注入的语句中添加关键字的转义字符。 例如,如果遇到这种情况,那就是防注射。
关于你这个问题:
Q:输入框中的SQL语句应该如何编写?
条件:所有数据库表和字段都是已知的,并且输入框的长度不受限制。
我只能告诉你,你可以在输入框中添加; 这种符号使语句解析有问题,因此 PHP 可以将 SQL 语句拼写为两个或多个语句。 这样,您可以在第二个语句之后添加要执行的命令。
如果此方法不起作用,则只能使用 overflow 注入它!
-
外引号应加双引号,但$biao应用 括起来,或者不使用,即
result=mysql_query("select * from `$biao`");
或者 $result=mysql query("select * from $biao");
两者都很好。
-
$result=mysql_query(' select * from ‘$biao’ ');
一直以这种形式编程。
-
怎么可能,教程中的变量是并列的。
-
不可以,变量应该在括号中放大,或者应该使用字符串连接器来连接两个字符串。
1 如果你的$meal是一个变量,而 mealnum 是一列基于字符的数据,可以这样写:
result = mysql_query("select * from where mealnum=‘’");
2 如果你的$meal是一个变量,而 mealnum 是一个数字列,可以这样写:
result = mysql_query("select * from where mealnum=");请注意,大括号外没有单引号。
3 如果你的$meal是一个字符串,mealnum 是一列基于字符的数据,可以这样写:
result = mysql_query("select * from where mealnum=‘\$meal’");
4 如果你的$meal是一个字符串,而 mealnum 是一个数字数据列,那么它就是错误的;
另外:你已经说过$meal是一个字符,所以你必须添加两个单引号,如果它是一个数字,你不需要单引号。
-
From 后跟数据库名称,为什么要使用变量? 以下也应该是大括号。
-
使用时,请使用PHP的转义字符转身。
以这种方式尝试应该没有问题
也就是说,使用 {} 加载变量并让 PHP 强制解释。
-
其实这还不是全部,也可以直接在不提交任何请求后对数据库进行,也就是SQL语句还没有执行,但是SQL语句已经“准备好”了,需要调用execute方法才能真正执行。 Query 等于 prepare+execute 方法。 我之所以使用prepare 我理解有两个好处,一是你不需要考虑过滤参数内容,prepare 自动过滤或转义要插入到数据库中的数据,这样可以防止SQL注入; 二是 prepare 可以传递参数,例如:
obj = new pdo();
data = $obj-query("select * from `article` where `id` = 1");
;这个问号代表一个参数,可以修改。
-
您可以直接使用年份功能
select distinct year(n_createdate) createyear
from ai_news
order by year(n_createdate)
-
如果以下条件不完整,当然会有错误。
如果需要,则不需要 where 语句。
-
select substring(n_createdate,0,4) from ai_news group by substring(n_createdate,0,4)
子字符串函数如果这样写,就可以理解了,group by 是不抽取后面重复的记录。