Re: [請益] 跨資料表取欄位值
我來猜解問題
※ 引述《delighted817 (璇)》之銘言:
: 哈囉大家好!我想要從Inventory這個資料表中取得ICount的值
: 並和從表單中得到的值相減最後存回ICount中
: 以下是我的程式碼...
: $sql2 ="INSERT INTO `newERP`.`orderlist` (CNo, BDate, HDate, INo, IName,
: IStandard,";
: $sql2.=" IQuantity) VALUES ('";
: $sql2.=$_POST["CNo"]."','".$_POST["BDate"]."','".$_POST["HDate"]."',
: '".$_POST["INo"]."','".$_POST["IName"]."','";
: $sql2.=$_POST["IStandard"]."','".$_POST["IQuantity"]."')";
: $sql4="SELECT ICount FROM Inventory ";
: $sql3="UPDATE Inventory SET ICount=ICount-".$_POST["IQuantity"]."'
: WHERE INo= ".$_POST["INo"]." ";
: 執行出來的結果是
我們先假設以下的狀況有二
1. 逐一執行
2. 同時執行
3. 其他
: SQL:
: INSERT INTO `newERP`.`orderlist` (CNo, BDate, HDate, INo, IName, IStandard,
: IQuantity) VALUES (' 78','2011-10-27T08:58Z','2011-10-27T08:57Z',' 101',
: ' 計算機概論',' 參考書',' 1'),SELECT ICount FROM Inventory ,
: UPDATE Inventory SET ICount=ICount- 1' WHERE INo= 101
: 不知道為什麼ICount一直都抓不到值@@"
: 請問有人知道怎麼解決嗎?
1. 逐一執行的情況下
第二行語法沒問題(假設是這樣),所以我們看到你的第三行
UPDATE Inventory SET ICount = ICount -1' WHERE INo= 101
光是這個單引號就有問題了,Icount -1 沒錯,但多這個引號可能就會造成錯誤
You have an error in your SQL syntax
2. 同時執行
這種叫可能你是跑 mysql_query($sql2 . $sql3 . $sql4 .. )
在 phpMyAdmin 中跑 SQL 的話,可以一次跑多行沒錯,但是在 mysql_query 中..
mysql_query() sends a unique query (multiple queries are not supported) to ...
ref: http://tw2.php.net/mysql_query
在網站 php 跑 mysql_query 有不可執行多行的限制,所以你跑的東西會失敗
3. 其他
其它又分為二,第一個狀況絕對只能說... 恩...
你根本沒執行 mysql_query() ...
不過這種機會近乎於零,所以我們排除
那第二種狀況是甚麼呢?
可能是你以為 執行 SQL 給定變數要跟 PHP 一樣先取得才能更新
所以你才先跑
SELECT ICount FROM Inventory
然後又跑
UPDATE Inventory SET ICount=ICount- 1' WHERE INo= 101
可能是認為要先 SELECT 出 ICount 後才可以在後面 UPDATE..
那這個就是SQL概念的問題了,簡單的說就是多此一舉..
資料庫是會自己認變數的,除非你是PHP變數..
我能猜想到的情況就這樣了,如果還不是的話... 請其他大大幫忙吧Orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.65.193
※ 編輯: kerash 來自: 114.37.65.193 (10/27 21:29)
→
10/28 02:05, , 1F
10/28 02:05, 1F
→
10/28 08:47, , 2F
10/28 08:47, 2F
→
10/28 10:11, , 3F
10/28 10:11, 3F
推
10/28 10:32, , 4F
10/28 10:32, 4F
→
10/28 11:35, , 5F
10/28 11:35, 5F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
125
129