kb5077 发表于 2011-7-16 18:13:45

大家帮我看下我段代码哪里错了?

$ran=Random(1,124,1)
$hm='010203040506'
$gx="UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm (这句没有问题,用msgbox(0, "错误", $gx)可以显示)MsgBox(0, "错误", $gx)


$conn.Execute ($gx)(这三句都出错,但我不知道错在哪儿了,真的无语了,请高手指教)
$conn.Execute ("UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm)
$conn.Execute (""UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm")

kb5077 发表于 2011-7-16 18:47:58

难道没有人知道吗?

飘云 发表于 2011-7-16 19:30:18

本帖最后由 飘云 于 2011-7-16 19:32 编辑

最后两句不是一样吗?最后一句比前一句多出对引号而已=。=
哦,最后一句的引号使用不正确,如果里面有双引号,那么最外边用单引号

auto 发表于 2011-7-16 19:35:02

检测字段类型,贴出表结构或建表语句

kb5077 发表于 2011-7-16 21:21:24

$conn.Execute ()这句语句里面没有办法直接用变量吗?

netegg 发表于 2011-7-17 11:59:33

你那个$conn是什么对象

kb5077 发表于 2011-7-17 15:01:45

这是操作SQL数据库的上面几句代码是这样的.
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open ("driver={SQL Server};server=127.0.0.1;uid=XXX;pwd=XXX;database=XXX")
$RS.ActiveConnection = $conn

kb5077 发表于 2011-7-17 15:05:19

我要达到的目的是:弄一个输入号码的界面,输入号码,然后就根据输入的号码去查询是否有此号码,如果有的话,就更新这个号码的数据,没有就提示此号码不存在.

tubaba 发表于 2011-7-17 15:08:21

本帖最后由 tubaba 于 2011-7-17 15:13 编辑

看来您疏忽了sql操作的一个基本常识,首先得确定字段的数据类型,然后才能使用相应的查询,
......SET iState=" & $ran & " ......

如果iState 是char型,那么执行以上语句会出现数据类型不匹配的提示,得写成....SET iState='" & $ran & "' .....


$conn.Execute (""UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm")

请不要使用两个双影号
$conn.Execute ("UPDATE .. SET iState=" & $ran & " WHERE isID=" & $hm)
如果iState的数据类型是char,那么
$conn.Execute ("UPDATE .. SET iState='" & $ran & "' WHERE isID='" & $hm & "'")

kb5077 发表于 2011-7-17 21:41:30

$conn.Execute ("UPDATE .. SET iState=" & $ran & " WHERE isID=" & $hm)这句同样报错。
iState 是数据类型,那你的意思就是执行上面一句,但是上面就是报错

tubaba 发表于 2011-7-18 16:24:37

本帖最后由 tubaba 于 2011-7-18 16:41 编辑

你说iState和 isID的数据类型是int ,你的$hm='xxxxxxxx',这可是字符串类型的,
如果isID是 int型,那么,$hm和isID的数据类型不匹配,
因为你的$hm='010203040506',这个是字符串,前面有零,不能转化为数字,所以你需要修改数据库相应表的isID字段的数据类型为varchar或nvarchar才可以

然后$conn.Execute ("UPDATE .. SET iState=" & $ran & " WHERE isID='"& $hm & "'")
其实最方便的方法就是把你这个sql查询放到sql查询分析器里去验证,看是否能通过,然后再检查你是否用autoit语句表达清楚了


$ran=Random(1,124,1)
$hm='010203040506'
$gx="UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm (这句没有问题,用msgbox(0, "错误", $gx)可以显示)MsgBox(0, "错误", $gx)


$conn.Execute ($gx)(这三句都出错,但我不知道错在哪儿了,真的无语了,请高手指教)
$conn.Execute ("UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm)
$conn.Execute (""UPDATE .. SET iState=" & $ran & " WHERE isID="& $hm")
页: [1]
查看完整版本: 大家帮我看下我段代码哪里错了?