MySQL / PHP는 데이터가 데이터베이스 테이블에 있는지 확인합니다.

nikito2003

입력 한 데이터가 이미 데이터베이스 테이블에 있는지 확인하고 테이블에 삽입하지 않는지 확인하는 데 문제가 있습니다. 내가 알아낼 수없는 것은 데이터베이스에 방금 삽입 된 데이터의 ID (기본 및 자동 증가)를 얻는 방법입니다.

데이터베이스에 아직없는 경우 삽입 할 수 없다고 생각한 다음 해당 데이터의 ID를 모두 동일한 스크립트에서 다른 테이블에 삽입 할 수 있습니다. 그래도 나는 틀릴 수 있습니다. 그래서 내가 지금 가지고있는 것은 이미 삽입되었는지 확인하고 그렇지 않은 경우 삽입 한 다음 정보의 ID를 얻기 위해 다른 PHP 스크립트로 리디렉션하는 하나의 스크립트입니다.

나는 이것에 많은 오류가 있습니다. 데이터베이스에 있어도 삽입하고 두 번째 스크립트로 리디렉션되면 서버 오류가 발생합니다. 어떤 도움이라도 좋을 것입니다. 미리 감사드립니다!

편집 : 두 파일을 하나로 교체 했는데 새 코드는 다음과 같습니다. 그래도 여전히 문제가 발생합니다. 관심 목록이있는 첫 번째 테이블에 중복 된 관심사가 삽입됩니다.

<?php

require_once '../scripts2/app_config.php';
require_once '../scripts2/database_connection.php';
require_once '../scripts2/authorize.php';

session_start();

// Authorize any user, as long as they're logged in
authorize_user();

$user_id = $_SESSION['user_id'];

$interest = trim($_REQUEST['interest']);


$get_interests = "SELECT COUNT(*) AS cnt FROM interests WHERE name = " . $interest;
$query_interests = mysql_query($get_interests);
if($query_interests) {
$hjk = mysql_fetch_array($query_interests);
$cnt = $hjk['cnt'];
}
if($cnt < 1) {
// $num_interests = mysql_num_rows($query_interests);

// insert the interest if it is not already in the database
$insert_sql = sprintf("INSERT INTO interests " .
                              "(name) " .
    "VALUES ('%s');",
         mysql_real_escape_string($interest));


//insert the user into the database
$insert_query = mysql_query($insert_sql);
$id = mysql_insert_id();

// From the newly inserted interest get the id of the interest
$insert_user_interests = sprintf("INSERT INTO user_interests " .
                                                 "(user_profile_id, interest_id) " .
                            "VALUES (%d, %d);",
                             mysql_real_escape_string($user_id),
                             mysql_real_escape_string($id));

mysql_query($insert_user_interests);
//Redirect this user to the page that displays user information
$url = 'show_profile_user_interests.php';
header('Location: '. $url);
exit();
} else {
/* If the interest is already in the table, just insert the id of the interest and
user_profile_id */

$get_interests2 = "SELECT id FROM interests WHERE name = " . $interest;
$query_interests2 = mysql_query($get_interests2);
if($query_interests2) {
$hye = mysql_fetch_array($query_interests2);
$interest_id = $hye['id'];
}
$insert_user_interests = sprintf("INSERT INTO user_interests " .
                                                 "(user_profile_id, interest_id) " .
                            "VALUES (%d, %d);",
                             mysql_real_escape_string($user_id),
                             mysql_real_escape_string($interest_id));

mysql_query($insert_user_interests);

//Redirect this user to the page that displays user information
$url = 'show_profile_user_interests.php';
header('Location: '. $url);
exit();
}
?>

내가 생각하는 주요 문제는 다음과 같지만 틀릴 수 있습니다 ...

$get_interests = "SELECT COUNT(id) AS cnt FROM interests WHERE name = " . $interest;
$query_interests = mysql_query($get_interests);
if($query_interests) {
$hjk = mysql_fetch_array($query_interests);
$cnt = $hjk['cnt'];
}
if($cnt > 0) {
발가락 실험실

NOT EXISTS키워드가 도움 될 수 있습니다.

문서 :

하위 쿼리가 모든 행을 반환하는 경우 EXISTS 하위 쿼리는 TRUE이고 NOT EXISTS 하위 쿼리는 FALSE입니다. 예를 들면 :

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

귀하의 경우 :

"INSERT INTO user_interests
    WHERE NOT EXISTS
        (SELECT * FROM interests
            WHERE name = '" . $interest . "')
    (user_profile_id, interest_id) 
VALUES 
    (...,...)"

또는 짧은 방법

"INSERT INTO user_interests
    IF NOT EXISTS name = '" . $interest . "'
    (user_profile_id, interest_id) 
VALUES (...,...)"

이렇게하면 2 대신 1 개의 쿼리 만 수행하므로 다음을 의미합니다.

  • 두 개 대신 db-server에 대한 한 요청
  • 적은 트래픽
  • 더 많은 성능

편집 됨 (질문과 직접 ​​관련이 없음)

선택 쿼리에 오류가 있습니다.

"SELECT COUNT(id) AS cnt FROM interests WHERE name = " . $interest;

다음 '과 같이 추가해야합니다 .

...name = '". $interest . "'"; 이름이 varchar

편집 II

mysql_더 이상 함수를 사용하면 안됩니다 !

PHP에서 mysql_ 함수를 사용하지 않는 이유를 읽으십시오 . !

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

테이블이 데이터베이스에 있는지 여부를 확인하는 MySQL 쿼리

분류에서Dev

mysql 데이터베이스에 이메일이 있는지 PHP 확인

분류에서Dev

PouchDB는 로컬 데이터베이스가 있는지 확인합니다.

분류에서Dev

두 개의 MYSQL 데이터베이스 테이블을 결합하고 두 번째 테이블에 레코드가 없는지 확인한 다음 FALSE를 반환하고 열에 특정 값이 있으면 FALSE도 반환합니다.

분류에서Dev

내 데이터베이스 테이블에 값이 있는지 확인

분류에서Dev

Asp.Net의 데이터베이스에 데이터가 있는지 확인해야합니다.

분류에서Dev

mysql의 다른 테이블에 열 데이터가 있는지 어떻게 확인할 수 있습니까?

분류에서Dev

mysql 데이터베이스에 변수가 있는지 확인하는 if 문을 어떻게 만듭니 까?

분류에서Dev

mysql에 특정 데이터베이스의 모든 테이블 데이터를 자르는 쿼리가 있습니까?

분류에서Dev

데이터는 MySQL 데이터베이스에 저장되지 않습니다.

분류에서Dev

데이터베이스에 레코드가 있는지 확인

분류에서Dev

데이터베이스가 mysql 또는 mariadb인지 확인하는 방법

분류에서Dev

더비 데이터베이스의 테이블에 자동 증가가 있는지 확인

분류에서Dev

mysql 데이터베이스와 인터페이스하는 Android

분류에서Dev

Mysql의 저장 프로 시저 내에있는 다른 데이터베이스의 테이블에서 데이터를 가져 오려고 시도하는 동안 데이터를 반환하지 않습니다.

분류에서Dev

Python Flask (sqlachemy)-사용자가 양식에 테이블 이름을 입력 한 후 데이터베이스 이름이 있는지 확인합니까?

분류에서Dev

MySQL 데이터베이스 A의 테이블에서 데이터베이스 B의 기존 테이블에 행을 추가하는 방법

분류에서Dev

mysql 데이터베이스에서 테이블을 삭제 한 사람을 확인하는 방법

분류에서Dev

값이 데이터베이스에 이미 있는지 확인

분류에서Dev

SQLite 데이터베이스 테이블에 레코드가 있는지 확인하십시오.

분류에서Dev

SQLite : 데이터베이스가 있는지 확인

분류에서Dev

Wordpress는 MySQL 데이터베이스를 인식하지 못합니다.

분류에서Dev

mysql 데이터베이스의 한 테이블에서 다른 테이블로 데이터를 삽입하고 검색하는 방법

분류에서Dev

Android SQLite 데이터베이스에서 테이블 이름을 검색하는 데 문제가 있습니다.

분류에서Dev

사용자가 MySQL 데이터베이스에 있는지 확인하지 못함

분류에서Dev

NodeJS에서 제출 한 데이터는 Mysql 데이터베이스에 정의되어 있지 않습니다.

분류에서Dev

Mysql은 이메일이 데이터베이스에 있는지 확인하고 계속 0을 반환합니다.

분류에서Dev

mysql, php는 배수 테이블 mysql에서 데이터를 검색합니다.

분류에서Dev

로그인이 데이터베이스에 있는지 확인

Related 관련 기사

  1. 1

    테이블이 데이터베이스에 있는지 여부를 확인하는 MySQL 쿼리

  2. 2

    mysql 데이터베이스에 이메일이 있는지 PHP 확인

  3. 3

    PouchDB는 로컬 데이터베이스가 있는지 확인합니다.

  4. 4

    두 개의 MYSQL 데이터베이스 테이블을 결합하고 두 번째 테이블에 레코드가 없는지 확인한 다음 FALSE를 반환하고 열에 특정 값이 있으면 FALSE도 반환합니다.

  5. 5

    내 데이터베이스 테이블에 값이 있는지 확인

  6. 6

    Asp.Net의 데이터베이스에 데이터가 있는지 확인해야합니다.

  7. 7

    mysql의 다른 테이블에 열 데이터가 있는지 어떻게 확인할 수 있습니까?

  8. 8

    mysql 데이터베이스에 변수가 있는지 확인하는 if 문을 어떻게 만듭니 까?

  9. 9

    mysql에 특정 데이터베이스의 모든 테이블 데이터를 자르는 쿼리가 있습니까?

  10. 10

    데이터는 MySQL 데이터베이스에 저장되지 않습니다.

  11. 11

    데이터베이스에 레코드가 있는지 확인

  12. 12

    데이터베이스가 mysql 또는 mariadb인지 확인하는 방법

  13. 13

    더비 데이터베이스의 테이블에 자동 증가가 있는지 확인

  14. 14

    mysql 데이터베이스와 인터페이스하는 Android

  15. 15

    Mysql의 저장 프로 시저 내에있는 다른 데이터베이스의 테이블에서 데이터를 가져 오려고 시도하는 동안 데이터를 반환하지 않습니다.

  16. 16

    Python Flask (sqlachemy)-사용자가 양식에 테이블 이름을 입력 한 후 데이터베이스 이름이 있는지 확인합니까?

  17. 17

    MySQL 데이터베이스 A의 테이블에서 데이터베이스 B의 기존 테이블에 행을 추가하는 방법

  18. 18

    mysql 데이터베이스에서 테이블을 삭제 한 사람을 확인하는 방법

  19. 19

    값이 데이터베이스에 이미 있는지 확인

  20. 20

    SQLite 데이터베이스 테이블에 레코드가 있는지 확인하십시오.

  21. 21

    SQLite : 데이터베이스가 있는지 확인

  22. 22

    Wordpress는 MySQL 데이터베이스를 인식하지 못합니다.

  23. 23

    mysql 데이터베이스의 한 테이블에서 다른 테이블로 데이터를 삽입하고 검색하는 방법

  24. 24

    Android SQLite 데이터베이스에서 테이블 이름을 검색하는 데 문제가 있습니다.

  25. 25

    사용자가 MySQL 데이터베이스에 있는지 확인하지 못함

  26. 26

    NodeJS에서 제출 한 데이터는 Mysql 데이터베이스에 정의되어 있지 않습니다.

  27. 27

    Mysql은 이메일이 데이터베이스에 있는지 확인하고 계속 0을 반환합니다.

  28. 28

    mysql, php는 배수 테이블 mysql에서 데이터를 검색합니다.

  29. 29

    로그인이 데이터베이스에 있는지 확인

뜨겁다태그

보관