2012-08-08 93 views
0

編輯:我剛剛通過將INSERTS合併到一個查詢中解決了這個問題,但我仍然想知道爲什麼在第一次遇到它時會失敗。MySQLi查詢在某些多個查詢中失敗

我目前使用mysqli的查詢命令提交多個查詢,因爲我不需要像multi_query允許的查詢結果循環。我沒有使用多重查詢的主要原因是因爲我沒有關閉並重新打開數據庫而多次使用它。所以如果你有這個問題的解決方案,也許它會解決這個問題。

因爲我與multi_query困難的,我最後只使用查詢,並把多個查詢它的內部,像這樣:

$sql = "INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date) 
      VALUES ($customerID, 'PhoneNumber', '$phoneNumber', NOW()); 
      INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date) 
      VALUES ($customerID, 'Email', '$email', NOW()); 
      INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date) 
      VALUES ($customerID, 'CanEmail', '$emailMe', NOW()); 
      INSERT INTO customers_attributes (ForeignCustomer, Type, Content, Date) 
      VALUES ($customerID, 'CanText', '$textMe', NOW()); 
     "; 
    $mysqli->query($sql); 

現在,上面的代碼工作,但是,當我試圖做精確的與此代碼相同的概念:

$sql = "INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content) 
     VALUES ($jobID, 0, 'IssueDescription', NOW(), '$issueDescription'); 
     INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content) 
     VALUES ($jobID, 0, 'UserPassword', NOW(), '$userPassword'); 
     "; 
if($mysqli->query($sql) === TRUE) 
    echo "Good"; 
else 
    echo $mysqli->error; 

它引發了關於SQL第三行語法的一般錯誤。我已經用變量打印了查詢,並直接在phpMyAdmin中運行,並且運行良好,所以查詢很好,問題似乎是將兩個查詢放在一起,即使它是第一次運行。爲了驗證這一點,我嘗試了下面的代碼,它的工作原理:

$sql = "INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content) 
     VALUES ($jobID, 0, 'IssueDescription', NOW(), '$issueDescription'); 
     "; 
echo " 
$sql 
"; 
if($mysqli->query($sql) === TRUE) 
    echo "Good"; 
else 
    echo $mysqli->error; 
$sql = "INSERT INTO jobs_notes (ForeignJob, ForeignUser, Type, Time, Content) 
     VALUES ($jobID, 0, 'UserPassword', NOW(), '$userPassword');"; 

if($mysqli->query($sql) === TRUE) 
    echo "Good"; 
else 
    echo $mysqli->error; 

如果你可以解釋如何正確使用多個multiqueries我的目的,或者告訴我,爲什麼一個正在工作,另一個是沒有,要麼將是一個完全可以接受的答案。

+0

你會得到什麼樣的錯誤? – dezso 2012-08-08 17:12:42

+0

您遺漏了您的問題中最重要的信息之一...錯誤消息。如果我們確切地知道問題是什麼,我們可以幫助你更好。 – sachleen 2012-08-08 17:15:47

+0

這是沿線「附近的錯誤行INSERT INTO jobs_notes(ForeignJob,ForeignUser,Type,Time,Content)」 – Ecksters 2012-08-08 17:18:28

回答

0

嘗試mysqli_multi_query而不是mysqli_query函數。
它執行一個或多個用分號連接的查詢。

+0

「我沒有使用多查詢的主要原因是因爲我有使用問題它不止一次地關閉和重新打開數據庫,所以如果你有解決這個問題的方法,也許它會解決這個問題。「 – Ecksters 2012-08-08 17:19:57

+0

現在,我一定認爲你是對的,multi_query應該在這裏使用,但在這一點上,我真的只想知道爲什麼它一次工作,但不是當我第二次做同樣的事情時 – Ecksters 2012-08-08 17:22:58