php - SQL INSERT INTO SELECT 语句

标签 php mysql

我有一个使用 MySQL 服务器的 Android 应用程序,我试图找出如何使用 INSERT INTO SELECT 语句。 这是我的 php 脚本中的内容。当我用“硬代码”测试它时它有效 值。

<?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) 

最佳答案

谢谢大家,我通过使用 INSERT IGNORE 找到了解决方案,谢谢@Barmar 你的同事

关于php - SQL INSERT INTO SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45869720/

相关文章:

php - MySQL num_rows 不返回值(SELECT INTO)

php - 在php sql语句中动态更改偏移量

php - 数据库返回记录作为对象还是数组?

javascript - 是否可以使用 findAll() 创建查询并使用数据透视表(多对多关系)中的 ForeignKey 获取过滤结果?

php - 合并结果中的行

javascript - 在 NodeJS 中使用 MySQL 的 Passportjs

mysql - 如何在数据库中存储具有动态数量属性的数据

php - Json编码获取重复数据

php - 显示一对多数组

php - Foundation- Contact Form 调整