iT邦幫忙

0

被分號搞死

  • 分享至 

  • xImage

各位大大
因為近期換了公司來到一家保健食品做IT
馬上遇到主機死當
於是把先前備份換到另一個VM空間上
安裝win10
php 5.2.17
mysql 8(DB沒在這次災難離世, 先前就把web跟DB分離了)
apache 2.2
然後就遇到了
connection 失敗的訊息, 也不是全部的程式碼都不能
不經意的在一行insert sql script 加上分號
就可以執行了
但這下腫了
到底在php 的程式裡
MYSQL 的query要不要在結尾加上分號?
跟mysql 或mysqli有關嗎
我被搞死了
現在只要遇上connect失敗的, 我就把分號加上去, 就可以了
可以沒遇見的, 我加了分號却不能執行
我瘋了
那位大大能指點迷津嗎??

看更多先前的討論...收起先前的討論...
wiseguy iT邦超人 1 級 ‧ 2023-02-01 00:27:15 檢舉
標準 SQL 是需要以分號當指令結尾的。MySQL 也不例外。
如果在程式語言中,以函數去下 SQL,大多數加分號也都 OK,很少有加分號反而錯誤的。你再遇到加分號會錯誤,去掉反而正確的,可以貼上來給專家們看看什麼問題。
arcashui iT邦新手 4 級 ‧ 2023-02-01 00:51:43 檢舉
謝謝您的回答
現在的情形是
原來的程式碼是可以執行的
例如
$db->query("Insert into tableA values('01','B-sting',0,'Y')");
但移植到現在的平台上, 除了OS從winserver 變成win10
其他都沒有變,
就是遇到類似上述的情形時會出現connection 失敗的訊息
但在我把分號加上去後, 就正常了
$db->query("Insert into tableA values('01','B-sting',0,'Y');");
僅僅只是一個分號就好了, 我傻眼了.
我也找不到php.ini中沒有相關的設定
真的傻眼了
小哈片刻 iT邦研究生 4 級 ‧ 2023-02-01 03:47:54 檢舉
要不要先檢查一開始mysqli有沒有接通。
有沒有可能是密碼裏有分號?
$mysqli = new mysqli("localhost","my_user","my_password","my_db");
f ($mysqli -> connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
變的是程式跟資料庫中間的連接驅動器.......PHP升級後捨棄了不少過時的驅動
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-02-01 08:06:44

各位大大
因為近期換了公司來到一家保健食品做IT
馬上遇到主機死當
於是把先前備份換到另一個VM空間上
安裝win10
php 5.2.17
mysql 8(DB沒在這次災難離世, 先前就把web跟DB分離了)
apache 2.2
然後就遇到了
connection 失敗的訊息, 也不是全部的程式碼都不能
不經意的在一行insert sql script 加上分號
就可以執行了
但這下腫了
到底在php 的程式裡
MYSQL 的query要不要在結尾加上分號?

在 MySQL 中,SQL 語句的結尾加上分號是選擇性的
但建議加上分號以保持一致性,以免造成任何混淆。

跟mysql 或mysqli有關嗎

無關

我被搞死了
現在只要遇上connect失敗的, 我就把分號加上去, 就可以了
可以沒遇見的, 我加了分號却不能執行
我瘋了
那位大大能指點迷津嗎??

照理說加不加分號不會影響 SQL 語句的正確性
建議檢查錯誤日誌,捕獲詳細的錯誤訊息
把LOG貼出來參詳一下~

我要發表回答

立即登入回答