PHP中sql语句如何使用变量

SQL语句变量问题

先讲下单引号和双引号的问题

‘‘单引号 php会把它里面的内容当成字符串来处理。

""双引号 php会根据里面的值来处理。比如里面有变量 那么变量的值就会把变量替换。

例子

<?php

$a=‘Hello Word!‘;

echo ‘$a‘;

echo "$a";

//这两个输出的结果是不一样的

//第一个输出就是$a

//第二个输出Hello Word!

//数据库查询例子:

$username=‘admin‘;

$sql="select * from user where username=‘$username‘";

 

 

2

不行的,变量是要加大括号的,或者使用字符串连接符连接2个字符串。
1如果你的$meal是一个变量、mealnum是字符型的数据的列,就这样写:
$result = mysql_query("SELECT * FROM {$res} WHERE mealnum=‘{$meal}’");
2如果你的$meal是一个变量、mealnum是数字型的数据的列,就这样写:
$result = mysql_query("SELECT * FROM {$res} WHERE mealnum={$meal}");注意大括号外没单引号。
3如果你的$meal就职一个字符串、mealnum是字符型的数据的列,就这样写:
$result = mysql_query("SELECT * FROM {$res} WHERE mealnum=‘\$meal’");
4如果你的$meal就职一个字符串、mealnum是数字型的数据的列,那么就会错误了;
另外:
你已经说了$meal是一个字符型,所以就必须加两个单引号,如果是数字型就不需要单引号。

在框架自带的数据库操作不能满足项目需求的时候,原生的sql语句就像是救命稻草。然而自以为基础的sql

却让我欲仙欲死,眼高手低的坏处。故在此记录一下mysql结合php的例子

1、mysql中加php变量,第一种方法是用中括号来区分变量

举个栗子:$sql=" select *  from table where city=‘{$city}‘ and state=‘{$state}‘ ";

括号内即为php的变量。在此我发现也有不同的写法,例如:

。。order by m.dateline DESC limit {$offset},{$page_size}

数字的话,加{}就可以。字符串的话需要带上单引号:‘{}‘,{}代表括号里面是变量

2、第二种方法,用".$v."来连接:

举个栗子:"insert into table_book (bookname,seekwords,author,state,foldername) values (‘".$vv.‘",5,10,15,20)";

需要注意的是,字符串是需要加双引号的,这就涉及到php的基础知识,“双引号解析变量,单引号不解析变量”

php+mysql 语句中被查询的字段可以设置变量么

  1. $condition = "a_size";

  2.  

    $single_size = 30;

  3.  

    $sql_count = "select count(*) as count from foot_info WHERE ‘$condition‘ = ‘$single_size‘ ";

  4.  

我这样运行,貌似什么也查询不到
但很奇怪,如果我用字符串连接成sql语句就可以正常查询,如下

  1. $sql_count = "select count(*) as count from foot_info WHERE".$condition." = ‘$single_size‘ ";

  2.  

/////////////////////////////////////
我又输出了上面两个sql语句的输出,分别是

  1. select count(*) as count from foot_info WHERE Foot_Size = ‘30‘//可运行

  2.  

    select count(*) as count from foot_info WHERE ‘Foot_Size‘ = ‘30‘//不可运行

答:把$condition的引号去掉就好。。

原文地址:https://www.cnblogs.com/linqingvoe/p/10909777.html

时间: 2024-11-05 18:55:26

PHP中sql语句如何使用变量的相关文章

php中sql语句常见错误

.php文件中sql语句的写法导致的错误如下: 1.$logSql="select * from jd_login where uname=".$u."and upwd=".$p; 报错如下: 查询用户失败: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use

SSIS中Sql Task 获取系统变量

原文:SSIS中Sql Task 获取系统变量 执行 SQL 任务使用不同的连接类型时,SQL 命令的语法使用不同的参数标记.例如,ADO.NET 连接管理器类型要求 SQL 命令使用格式为 @varParameter 的参数标记,而 OLE DB 连接类型要求使用问号 (?) 参数标记. 在变量与参数之间的映射中可以用作参数名的名称也因连接管理器类型而异.例如,ADO.NET 连接管理器类型使用带 @ 前缀的用户定义名称,而 OLE DB 连接管理器类型要求使用从 0 开始的序数数值作为参数名

详解Java的MyBatis框架中SQL语句映射部分的编写

这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: ? 1 2 3 4 5 6 <mappers>   <mapper resource="com/limi

跟踪oracle中sql语句执行过程及相关知识拓展

<pre name="code" class="sql">select * from v$sqlarea; select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这个方法查询结果每条记录显示一条查询语句,且只能查询sql_text小于1000字符的,多余的会被截断. 改进一下: select * from v$sqlarea where first_load_tim

java中sql语句能不能加分号的问题?

一.原因  在程序运行中,当执行sql后总是报无效字符错误:但是把程序放在pl/sql中执行又没有错误.让我很纳闷!于是我开始查找资料,然后我终于发现了问题. 二.问题剖析 原来在程序中:如果你在程序里面写sql,就不要加分号,在程序里面编译器会把分号当做sql本身的一部分,所以会报错. 如果是在查询工具里面(比如plsql),这个时候可以加上分号,在工具里面已经做过预处理,分号是个分隔符,看到分号就标志着本条sql语句结束了: 因此java中sql语句能不能加分号.

Sql语句里面调用变量

sql语句里面调用变量的话有两种情况,一种是字符类型,一种是整型.浮点型之类的数字 db1.Execute("insert DataInformation values('" + user + "','" + list2[j].PlaceID + "'," + list2[j].VELO + "," + list2[j].F + "," + list2[j].SS + "," + lis

转 mysql 中sql 语句查询今天、昨天、7天、近30天、本月、上一月 数据

转自 http://blog.csdn.net/ve_love/article/details/19685399 转 mysql 中sql 语句查询今天.昨天.7天.近30天.本月.上一月 数据

Sql Server中sql语句自动换行

怎么让sql server中的sql语句自动换行呢? 如下图: 工具--选项--所有语言 Sql Server中sql语句自动换行

ORACLE 中 SQL语句优化

(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):  ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.    (2) WHERE子句中的连接顺序.:  ORACLE采用自下而上的顺序解