2017-08-24 211 views
0

我有一個使用MySQL服務器的android應用程序,並試圖找出如何使用INSERT INTO SELECT語句。 這是我在我的PHP腳本中。當我使用'硬代碼' 值測試它時,它工作正常。SQL INSERT INTO SELECT語句

<?php 
require "conn.php"; 
$UserID = $_POST["UserID"]; 
$EventID = $_POST["EventID"]; 

$query = "INSERT INTO Interested (UserID, EventID) 
SELECT '$UserID' , '$EventID' FROM Interested 
WHERE NOT EXISTS (SELECT UserID, EventID FROM Interested WHERE UserID = '$UserID' 
AND EventID = '$EventID') LIMIT 1;"; 

$result = mysqli_query($conn ,$query); 
if(mysqli_num_rows($result) > 0) 
{ 
    echo "Interested"; 
} 
else 
{ 
    echo "Duplicate"; 
} 
?> 

的Android給了我這個錯誤消息

08-24 21:57:39.517 8553-9030/com.example.feelingoodlivinbeta.socialdreams_a1 E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3 
    Process: com.example.feelingoodlivinbeta.socialdreams_a1, PID: 8553 
    java.lang.RuntimeException: An error occurred while executing doInBackground() 
     at android.os.AsyncTask$3.done(AsyncTask.java:309) 
     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
     at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
     at java.lang.Thread.run(Thread.java:818) 
    Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 
     at com.example.feelingoodlivinbeta.socialdreams_a1.InterestedFunction.doInBackground(InterestedFunction.java:32) 
     at com.example.feelingoodlivinbeta.socialdreams_a1.InterestedFunction.doInBackground(InterestedFunction.java:24) 
     at android.os.AsyncTask$2.call(AsyncTask.java:295) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
     at java.lang.Thread.run(Thread.java:818)  
+0

你爲什麼選擇VAR ..? $ UserID,$ EventId ?? – scaisEdge

+1

爲什麼不只是添加一個唯一索引? –

+0

你的代碼容易受到[SQL注入](https://stackoverflow.com/questions/601300/what-is-sql-injection) – litelite

回答

0

日Thnx傢伙,我發現通過使用INSERT忽略的解決方案,謝謝您@Barmar共同