当前位置:首页 » 编程语言 » php参数sql

php参数sql

发布时间: 2022-05-31 14:23:02

php分页查询的sql语句第一个参数给数字就正常,给运算就报错,为什么

SQL语句不支持这种运算,你可以将运算代码放到一个变量,SQL语句里面引用变量,或者" . (1 * 8) . "

⑵ PHP得到mssql的存储过程的输出参数功能实现

在开发过程中可能会遇到无法取得MSSQL存储过程的输出参数,很多朋友都不知道该怎么办,本文将详细介绍PHP得到mssql的存储过程的输出参数功能实现,需要了解的朋友可以参考下
复制代码
代码如下:
<?
$conn=mssql_connect("127.0.0.1","user","passwd");
mssql_select_db("mydb");
$stmt=mssql_init("pr_name",$conn);//
$a=50001;
mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR);
//用于直接返回return
-103此类的值。
mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//用于返回在存储过程中定义的输出参数
mssql_bind($stmt,"@invar",$a,SQLINT4);
$result
=
mssql_execute($stmt,true);//不能返回结果集,只能得到输出参数
//$result
=
mssql_execute($stmt,false);
//返回结果集
//$records=mssql_fetch_array($result);
//print_r($records);
//mssql_next_result($result);下一个结果集,当等于FALSE的时候下一个就是输出参数
echo
$b;
echo
$val;
?>
下面这些是从别的地方看到的。
小麻烦:
我们按照惯例使用了一个MS
Sql
Server的存储过程procA,它给出了一个输出参数nReturn,
而且返回了一个结果集。
在如何让PHP调用这个procA的时候,我们遭遇了一点小麻烦。
鱼肉和熊掌不可兼得:
我们本来希望这样的代码能够既得到输出参数,又得到返回的结果集:
复制代码
代码如下:
//
初始化要传进存储过程的参数们:
$nYear
=
2004;
$nPageSize
=
20;
$nPageNo
=
1;
//
Initializes
a
stored
procere:
$stmt
=
mssql_init("proc_stat_page",
$db_mssql->Link_ID);
//
绑定输入参数:
mssql_bind($stmt,
"@nReturn",
$nReturn,
SQLINT4,
TRUE);
mssql_bind($stmt,
"@nYear",
$nYear,
SQLINT4);
mssql_bind($stmt,
"@nPageSize",
$nPageSize,
SQLINT4);
mssql_bind($stmt,
"@nPageNo",
$nPageNo,
SQLINT4);
//
执行存储过程,得到QueryID:
$db_mssql->Query_ID
=
mssql_execute($stmt,false);
虽然得到了结果集,但是,这样$nReturn参数是拿不到输出参数的。
如果把最后一句话改为:
$db_mssql->Query_ID
=
mssql_execute($stmt,true);
输出参数倒是拿到了,结果集又没有了。
好像是一个鱼肉和熊掌不可兼得的样子。
难道PHP连这个都做不到?PHP手册中也没有讲这个问题。
来自于PHP维护者的解释:
原本我们这种调用办法是PHP
4.3版本之前肯定是支持的。
“但是,自从PHP
4.3版本之后,”他们说,“为了能够兼容存储过程返回多个结果集,PHP改变这个特性。”
“如果你不需要结果集,你应该设置mssql_execute的第二个可选参数为TRUE,这样mssql_execute方法之后你就可以得到输出参数了。”
“如果你需要返回的结果集们,你应该为每一个结果集调用一次mssql_next_result。在最后一个结果集返回之后,你再调用mssql_next_result就会得到返回值FALSE,这时候,你就可以访问输出参数了。”
解决:
在最后我们补上一句话:
//
After
the
last
result
has
been
returned
the
return
value
will
have
the
value
returned
by
the
stored
procere.
mssql_next_result($db_mssql->Query_ID);
立刻,魔法生效了:
PHP填充了正确的输出参数到$nRetVal里。

⑶ php 传值sql语句急急急!!!

<?php
$rs=mysql_query("selectcontentfrom".$_GET["table"]."whereid='".$_GET["id"]."'");
?>
//GET方式的url传值
//url.php?id=1&table=mytab
//这样的写法是有注入漏洞的,不建议这样弄,GET,POST数据必须过滤才能入库

⑷ 怎样用PHP连接sql数据库

1、学习的方法,最好是看手册
在前一篇文章中涉及到了连接数据库sqlsrv_connect();还记得我们mysql连接数据库的时候也是mysql_connect();两者操作数据库是很相似的。从零基础开始学起的话,只能是查阅手册。查看一下sqlsrv有哪些函数提供我们使用!推荐网址是:

【注意】很多的方法都跟mysql提供的方法很相似,看到后面的函数名就大概知道里面的用法,比如说mysql执行sql语句的时候调用mysql_query();而sqlserver执行sql语句的时候调用也是sqlsrv_query(),但是特别注意一点就是,它们的传递参数不一样。详细的只能看一下手册。接下来我简单总结一下操作数据的方法

2、连接数据库sqlsrv_connect()

<?php$serverName = "serverNamesqlexpress";//服务器的名字,本地localhost$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn ) { echo "Connection established.<br />";
}else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true));
}

3、操作数据库
1)执行sql语句sqlsrv_query(),返回值为true或者false,这里函数的用法跟mysql_query(),不一样。它需要把连接的资源句柄当作参数传进去,看源码。资源句柄就是上面代码连接数据库的“$conn”。

$sql = "select * from test1"; //sql语句$data = sqlsrv_query($conn,$sql); //$conn资源句柄if($data == true){ die("执行成功");
}else{ die("执行失败");
}

2)获取结果集

//以数值索引数组、关联数组或这两种数组的形式检索下一行的数据。类似于mysql_fetch_arraysqlsrv_fetch_array
//以对象形式检索下一行的数据。sqlsrv_fetch_object 1234
$sql = "select * from test1";$data = sqlsrv_query($conn,$sql);if($data == true){ while($row = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) { echo $row['id'].", ".$row['name']."<br />";
}else{ die( print_r( sqlsrv_errors(), true));
}
}
$sql = "SELECT fName, lName FROM Table_1";$stmt = sqlsrv_query( $conn, $sql);if( $stmt === false ) { die( print_r( sqlsrv_errors(), true));
}while( $obj = sqlsrv_fetch_object( $stmt)) { echo $obj->fName.", ".$obj->lName."<br />";
}

3)显示错误信息sqlsrv_errors():上面都有用到这个函数,只要是操作数据库发生错误,都可以使用这个函数打印出来看一下压
这里就不用上代码了

⑸ php脚本查询sql数据库添加参数

这种一般是sql语句的错误。你将php变量改为值之后将sql语句放到phpmyadmin或其他mysql工具里试一下是否能查到

⑹ php中如何将从外部获取的参数成为sql语句的主体部分

$sql_rain="SELECTto_char(".$SNAME.",'fm990.0')asvaluefromMTERM_RAIN_FORECAST_HISwhereTO_CHAR(START_TIME,'yyyy-mm-dd')='".$startDate."'";

⑺ php可以和sql结合吗

你说的 sql 估计是 Microsoft SQL Server
可以参考下面的文字

SQL Server 数据库函数库
------------------------------------------------------

本函数库共有 16 个函数
SQL Server 是 Microsoft 从 SyBASE 取得并修改的数据库系统,它只能在 Windows NT Server 上面执行。使用本函数只能使用 Windows NT Server 作为 PHP 的执行平台。
Microsoft SQL Server 的 query 语法为 Transact-SQL,和 SyBASE 的语法几乎相同。本数据库可能是所有 PHP 所支持数据库中,中文书籍最多的数据库了。

mssql_affected_rows: 取得最后 query 影响的记录数。
mssql_close: 关闭与数据库的连接。
mssql_connect: 连上数据库。
mssql_data_seek: 移动列指标。
mssql_fetch_array: 返回数组数据。
mssql_fetch_field: 取得字段信息。
mssql_fetch_object: 返回对象数据。
mssql_fetch_row: 返回单列的各字段。
mssql_field_seek: 设定指标到返回值的某字段。
mssql_free_result: 释放返回占用内存。
mssql_num_fields: 取得返回字段的数目。
mssql_num_rows: 取得返回列的数目。
mssql_pconnect: 打开 MS SQL 服务器长期连接。
mssql_query: 送出一个 query 字符串。
mssql_result: 取得查询 (query) 的结果。
mssql_select_db: 选择一个数据库。

详细资料:
-----------------------------------------------------

mssql_affected_rows

取得最后 query 影响的记录数。

语法: int mssql_affected_rows(int [link_identifier]);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数用来取得最后一次对数据库下 query 指令所影响的记录数,会影响的为 INSERT、UPDATE 或 DELETE 等指令,而 SELECT 不会影响。参数 link_identifier 可省略,为打开数据库的连接代号。返回值即为记录数。

-----------------------------------------------------

mssql_close

关闭与数据库的连接。

语法: boolean mssql_close(int [link_identifier]);

返回值: 布尔值

函数类型: 数据库功能

内容说明

本函数用来关闭与 MS SQL Server 数据库的连接,能关闭的为使用 mssql_connect() 函数打开的数据库,若使用 mssql_pconnect() 打开的数据库则不能以本函数关闭。参数 link_identifier 可省略,为打开数据库的连接代号。关闭成功则返回 true 值。

参考

mssql_connect() mssql_pconnect()

-----------------------------------------------------

mssql_connect

连上数据库。

语法: int mssql_connect(string [servername], string [username], string [password]);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数用来打开与 MS SQL Server 数据库的连接。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略,分别为连接使用的帐号及密码。使用本函数需注意早点关闭数据库,以减少系统的负担。连接成功则返回数据库的连接代号,失败返回 false 值。

参考

mssql_close() mssql_pconnect()
-----------------------------------------------------

mssql_data_seek

移动列指标。

语法: boolean mssql_data_seek(int result_identifier, int row_number);

返回值: 布尔值

函数类型: 数据库功能

内容说明

本函数用来移动 MS SQL Server 数据文件中的列指标到指定的列上,可供 mssql_fetch_row() 等函数使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的记录数。若失败则返回 false 值。

参考

mssql_close() mssql_pconnect()

-----------------------------------------------------

mssql_fetch_array

返回数组数据。

语法: array mssql_fetch_array(int result);

返回值: 数组

函数类型: 数据库功能

内容说明

本函数用来将查询结果 result 拆到数组变量中。若 result 没有数据,则返回 false 值。而本函数可以说是 mssql_fetch_row() 的加强函数,除可以将返回列及数字索引放入数组之外,还可以将文字索引放入数组中。

-----------------------------------------------------

mssql_fetch_field

取得字段信息。

语法: object mssql_fetch_field(int result, int field_offset);

返回值: 对象

函数类型: 数据库功能

内容说明

本函数返回的对象数据为 result 的字段 (Column) 信息。返回对象的属性如下:

name - 字段名称
column_source -字段所在表格的数据文件名称
max_length - 字段的最大长度
numeric - 若为 1 表示本字段为数字定义 (numeric)

参考

mssql_field_seek()

-----------------------------------------------------

mssql_fetch_object

返回对象数据。

语法: object mssql_fetch_object(int result);

返回值: 对象

函数类型: 数据库功能

内容说明

本函数用来将查询结果 result 拆到对象变量中。使用方法和 mssql_fetch_array() 几乎相同,不同的地方在于本函数返回值是对象而不是数组。若 result 没有数据,则返回 false 值。另外值得注意的地方是,取回的对象数据的索引只能是文字而不能用数字,这是因为对象的特性。对象数据的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字符串当索引了。关于速度方面,本函数的处理速度几乎和 mssql_fetch_array() 及 mssql_fetch_row() 二函数差不多,要用哪个函数还是看使用的需求决定。

参考

mssql_fetch_array() mssql_fetch_row()

-----------------------------------------------------

mssql_fetch_row
返回单列的各字段。

语法: array mssql_fetch_row(int result);

返回值: 数组

函数类型: 数据库功能

内容说明

本函数用来将查询结果 result 之单列拆到数组变量中。数组的索引是数字索引,第一个的索引值是 0。若 result 没有数据,则返回 false 值。

参考

mssql_fetch_array() mssql_fetch_object() mssql_data_seek() mssql_result()

-----------------------------------------------------

mssql_field_seek

设定指标到返回值的某字段。

语法: int mssql_field_seek(int result, int field_offset);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数设定目前的指标到返回值的特定字段中。参数 result 为返回值代码。参数 field_offset 则为指定的字段序数。

使用范例

mssql_fetch_field

-----------------------------------------------------

mssql_free_result

释放返回占用内存。

语法: int mssql_free_result(int result);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数可以释放目前 MS SQL Server 数据库 query 返回所占用的内存。一般只有在非常担心在内存的使用上可能会不足的情形下才会用本函数。PHP 程序会在结束时自动释放。

-----------------------------------------------------

mssql_num_fields

取得返回字段的数目。

语法: int mssql_num_fields(int result);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数可以得到返回字段的数目。参数 result 为返回值代码。

参考

mssql_query() mssql_fetch_field() mssql_num_rows()

-----------------------------------------------------

mssql_num_rows

取得返回列的数目。

语法: int mssql_num_rows(int result);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数可以得到返回列的数目。参数 result 为返回值代码。

参考

mssql_query() mssql_fetch_field() mssql_num_fields()

-----------------------------------------------------

mssql_pconnect

打开 MS SQL 服务器长期连接。

语法: int mssql_pconnect(string [servername], string [username], string [password]);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数和 mssql_connect() 雷同。不同的地方在于使用本函数打开数据库时,程序会先寻找是否曾经执行过本函数,若执行过则返回先前执行的 ID。另一个不同的地方是本函数无法使用 mssql_close() 关闭数据库。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略,分别为连接使用的帐号及密码。

-----------------------------------------------------

mssql_query

送出一个 query 字符串。

语法: boolean mssql_query(string query, int plink_identifier]);

返回值: 布尔值

函数类型: 数据库功能

内容说明

本函数送出 query 字符串供 MS SQL Server 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。成功则返回 true 值。

-----------------------------------------------------

mssql_result

取得查询 (query) 的结果。

语法: int mssql_result(int result, int row, mixed field);

返回值: 整数

函数类型: 数据库功能

内容说明

本函数取得一格 query 的结果。参数 field 可以是字段名称、顺序或者是 fieldname.tablename 的格式。在返回值量少时,可以使用本函数来处理。当数据库大时,本函数的效率就有待考虑了,这时可以使用较有效率的 mssql_fetch_row()、mssql_fetch_array() 或 mssql_fetch_object() 等函数。

-----------------------------------------------------

mssql_select_db

选择一个数据库。

语法: boolean mssql_select_db(string database_name, int [link_identifier]);

返回值: 布尔值

函数类型: 数据库功能

内容说明

本函数选择 MS SQL Server 中的数据库以供之后的数据查询作业 (query) 处理。成功返回 true,失败则返回 false。

-----------------------------------------------------

⑻ php怎样使用参数化防止sql注入

可以使用php的pdo对象,有预处理查询功能可以防止注入,再有,注入sql无非就是基于你sql的拼接问题影响的执行sql,也可以不用pdo预处理,把获取查询的参数里面的非法字符比如单引号双引号等这些字符手动过滤也可以的

⑼ php sql条件参数为数组

1、将二维数组转换为一维数组

$arr_2 (这是二维数组,就是你上边那个类型的,我这里就不贴了)
$arr_1 (这个保存转化后的一维数组)

下面是二维转化一维数组过程:
for($i=0;$i<count($arr_1);$i++){
$arr[] = $arr_2[$i]['cat_id'];
}

下面是循环输出一维数组:

foreach($arr_1 as $key=>$val){
echo $key . '<br>' .$val;
}

输出结果是所有的cat_id 键值。至于sql 中的循环,我想你看了这个以后应该会了。
原理就是将二维转换为一维数组,然后根据条件实现循环查询。这个转化的过程,你可以使用for循环,也可以使用php自带的合并数组函数,也可以使用高级点的spl高级数组合并。当然看你程序需要,如果是应用比较简单的,循环是最佳选择。

另外,邀请你加入我们php实验室,相互学习。在此,祝圣诞快乐。

⑽ PHP执行SQL查询

$haha = M(),$res = $haha->query($sql)。

或 $res = $waw->execute($sql)。

$sql中包含了表名,实例化模型时可以为空。注意query是查功能,execute是增删改功能。

热点内容
电视父母锁屏密码应该会是什么 发布:2025-02-11 08:36:42 浏览:891
梅花适合用哪些植物进行配置 发布:2025-02-11 08:30:54 浏览:251
安卓手机如何像苹果一样弹窗 发布:2025-02-11 08:26:33 浏览:911
压缩文件扫码 发布:2025-02-11 08:20:55 浏览:257
小米5安卓70怎么分屏 发布:2025-02-11 08:00:58 浏览:139
访问二维码 发布:2025-02-11 08:00:11 浏览:882
腾讯云香港服务器搭建 发布:2025-02-11 07:53:44 浏览:793
eclipsejava编译器 发布:2025-02-11 07:53:09 浏览:494
生化危机7D加密破解 发布:2025-02-11 07:48:32 浏览:943
数据库新增数据库 发布:2025-02-11 07:40:45 浏览:198