복붙노트

[SQL] SQL 행이 PHP 존재하는지 확인

SQL

SQL 행이 PHP 존재하는지 확인

나는 PHP와 MySQL을 사용하고 있는데 나는이 (의사) 같은 것을 할 필요가 :

if (sql row exists where username='bob')
{
    // do this stuff
}

해결법

  1. ==============================

    1.당신은 MySQL 데이터베이스를 사용하는 경우, 다음을 사용합니다 -

    당신은 MySQL 데이터베이스를 사용하는 경우, 다음을 사용합니다 -

    $query = "SELECT username from my_table where username='bob'";
    $result = mysql_query($query);
    
    if(mysql_num_rows($result) > 0)
    {
        // row exists. do whatever you would like to do.
    }
    

    당신이 PDO (PHP 데이터 개체)를 사용하려는 경우 알렉스가 제안, 다음 코드를 사용합니다 -

    $dbh = new PDO("mysql:host=your_host_name;dbname=your_db_name", $user, $pass);
    $stmt = $dbh->prepare("SELECT username from my_table where username = ':name'");
    $stmt->bindParam(":name", "bob");
    $stmt->execute();
    
    if($stmt->rowCount() > 0)
    {
        // row exists. do whatever you want to do.
    }
    
  2. ==============================

    2.Sayem의 대답은 대부분의 upvotes을 가지고 있지만, 나는 그것이 PDO에 대한 잘못된 생각합니다.

    Sayem의 대답은 대부분의 upvotes을 가지고 있지만, 나는 그것이 PDO에 대한 잘못된 생각합니다.

    PHP는 워드 프로세서 :

    대부분의 데이터베이스의 경우, PDOStatement :: rowCount의 ()은 SELECT 문에 의해 영향을받는 행의 수를 반환하지 않습니다. 대신, 사용 PDO :: 쿼리 () 의도 SELECT 문 같은 조건을 가진 SELECT COUNT (*) 문을 발행 한 후 반환되는 행의 수를 검색 할 수 PDOStatement :: fetchColumn ()를 사용합니다.

    $sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
    if ($res = $conn->query($sql)) {
    
      /* Check the number of rows that match the SELECT statement */
      if ($res->fetchColumn() > 0) {
    
           /* Issue the real SELECT statement and work with the results */
           $sql = "SELECT name FROM fruit WHERE calories > 100";
           foreach ($conn->query($sql) as $row) {
               print "Name: " .  $row['NAME'] . "\n";
           }
      }
      /* No rows matched -- do something else */
      else {
          print "No rows matched the query.";
      }
    }
    
    $res = null;
    $conn = null;
    
  3. ==============================

    3.또 다른 방법

    또 다른 방법

    $user = "bob";
    $user = mysql_real_escape_string($user);
    $result = mysql_query("SELECT COUNT(*) AS num_rows FROM my_table WHERE username='{$user}' LIMIT 1;");
    $row = mysql_fetch_array($result);
    if($row["num_rows"] > 0){
       //user exists
    }
    
  4. from https://stackoverflow.com/questions/6620019/check-if-sql-row-exists-with-php by cc-by-sa and MIT license