update可以直接写数组么,更新进数据库么

update可以直接写数组么,更新进数据库么,第1张

更新数据时,可以用以下方式(我常用的,还有其他的方式):

一、用recordset记录集的方式。

rsopen "select from tablename where id="&request("id"),conn,1,3

rs("a")=request("a")

rs("b")=request("b")

rsupdate

rsclose

用这种方式进行数据更新,有个好处就是当要更新的数据量非常大时,也可以很顺利的更新成功(比如备注型字段的数据,中间还包含了换行等等的)

二、用sql的update语句:

connexecute("update tablename set a='"&request("a")&"',b='"&request("b")&"',c="&request("c")&" where id="&request("id"))

用上面的方法更新数据时,如果是SQL数据库,而你要更新的数据内容里含有比如单引号['],双横线[--]之类的特殊字符,就会更新不成功的,因为这时候SQL会认为是非法字符,而把你的单引号给去掉的。而且当如果更新的是备注型字段,里面包含了换行等字符,也会显得很乱。但用这种方法更新,速度比用recordset的速度要快很多,因为毕竟这是直接更新数据库,而recordset是对update的封装形式。

其实更新数据库,非常简单,如果你对字符串连接的单引号,双引号,&号的使用觉得很混乱,那就用recordset的方式进行,这样会很清晰,一点都不会有混乱的感觉的。而如果你能熟练的使用单引号,双引号,&号,那么你用update语句更新数据库,就大在的提交了速度(当然如果数据量小,我建议用recordset记录集的方式,因为这种方式一个字段对应一个值,一行一个,这样下来,很清晰,还可以对每行做个备注,以后改起来也方便。而用update的方式,所有的值和记录全部连在一块,老长的一串,看得人头都发麻,而且update还不能添加特殊字符,比如上面说的单引号等。。。)

<php

$info=$_POST['info'] ;

$values = "";

for($i = 0; $i < count($info['title']); $i++){

    $values = "('{$info['title'][$i]}', '{$info['price'][$i]}', '{$info['amout'][$i]}'),";

}

$values = rtrim($values, ',');

mysql_query("insert into tablename values "$values);

//这种情况适用于比较少的行插入

如果数据量比较大

将数据按行存入文本中

for($i = 0; $i < count($info['title']); $i++){

    $values = "{$info['title'][$i]}\t{$info['price'][$i]}\t{$info['amout'][$i]}\r\n";

}

file_put_content('datatxt', $values);

mysql_query("load data local infile 'datatxt' into table tablename");

因为楼主没有说数据库的名字,还有表名所有,我写成了方法的入口参数了。我觉得楼主应该会取数组的值的哦。

环境: NET FRAMEWORK 20

需要引入的命名空间 SystemDataSqlClient

/// <summary>

/// 插入数据。

/// </summary>

/// <param name="database">数据库名</param>

/// <param name="userId">登录数据库的用户名</param>

/// <param name="password">登录密码</param>

/// <param name="srcTable">数据表名</param>

/// <param name="name">表字段 name</param>

/// <param name="sex">表字段 sex</param>

/// <returns></returns>

public int InsertData

( string database, string userId, string password, string srcTable, string name, string sex )

{

int affected = -1; // 用于记录受影响的行数。

// 构造连接字符串

string conStr = StringFormat( @"server=localhost;database={0};uid={1};password={2};", database, userId, password );

// 构造 T-SQL 语句

string sql = StringFormat( @"Insert INTO [{0}]( [name], [sex] ) VALUES( @name, @sex )", srcTable );

using( SqlConnection con = new SqlConnection( conStr ) )

{

SqlCommand cmd = new SqlCommand( sql );

// 设置参数的值

cmdParametersAddWithValue( "@name", name );

cmdParametersAddWithValue( "@sex", sex );

try

{

// 执行 *** 作,并记录受影响的行数。

affected = cmdExecuteNonQuery();

}

catch( SqlException sqlEx )

{

throw new Exception( "数据库异常", sqlEx );

}

catch

{

throw new Exception( "未知错误" );

}

finally

{

cmdCancel();

cmdDispose();

}

}

return affected;

}

命名列,如果需要,可以设置一个主键,然后把对应的值写入

比如:

create table abc(

mun int identity(1,1),

col1 varchar(10) null,

col2 varchar(10) null,

col3 varchar(10) null,

col4 varchar(10) null,

col5 varchar(10) null,

,

合计 varchar(10) null

)

然后你把数据写入这个表,最后一行的合计在报表中做

有两个方法可供选择,一种是把数据存入csv文件,然后执行load data infile

还有一种就是类似于sql server里面的bulk insert,使用insert语句插入批量数据,结合PHP的implode函数,

可以很简单的实现大批量数组数据的一次性插入。

[php] view plaincopy

$statement = "INSERT INTO table (title, type, customer) VALUES ";

foreach( $data as $row) {

$statement = ' ("' implode($row, '","') '")';

}

不过大批量数据的插入,需要注意mysql在内存上有限制:

>

利用PHP对数组赋值时下标变量会自动递增的特点,可以很方便用循环将数据存入一个数组。例如:$arr[] = 'a'; 这条语句会将字符a存入数组变量$arr中,如果$arr不存在则会新建一个;若已存在,则将$arr数组的下标变量递增1后存入字符。也就是说,如果已有$arr[0]='a', 那么执行 $arr[] = 'b'; 后,数组其实是进行了$arr[1] = 'b' 的 *** 作。

简单点的办法,数据库用一个字段表示数组,字段类型为文本类型。

程序存入数组到数据库的时候,利用join方法把数组转换为分隔符分隔的字符串,比如你的例子数组a[1]="第一步";a[2]="第二步";合并后为"第一步|第二步",把这个合并后的字符串存入数据库你是会的。

从数据库里面取出合并后的字符串"第一步|第二步"以后,利用split方法可以转换为数组。

这个方法的最大的优点是可以保存个数不确定的数组,程序编写相当简单。

以上就是关于update可以直接写数组么,更新进数据库么全部的内容,包括:update可以直接写数组么,更新进数据库么、PHP数组,如何写入mysql数据库、如何把数组的值插入到数据库 c#等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9714527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存