development

PHP-MySQL에서 단일 레코드를 읽는 간단한 방법

big-blog 2020. 12. 28. 22:26
반응형

PHP-MySQL에서 단일 레코드를 읽는 간단한 방법


MySQL 데이터베이스에서 단일 레코드를 읽는 PHP로 가장 좋은 방법은 무엇입니까? 예 :

SELECT id FROM games

이전 질문에서 답을 찾으려고했지만 운이 없었습니다.


$id = mysql_result(mysql_query("SELECT id FROM games LIMIT 1"),0);

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database_name', $link);
$sql = 'SELECT id FROM games LIMIT 1';
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
print_r($row);

ChrisAD 답변에는 빠진 것이 거의 없었습니다. mysql에 연결 한 후 데이터베이스를 선택하는 것이 중요하며 die()문을 사용하면 오류가 발생할 경우 오류를 볼 수 있습니다.

그렇지 않으면 당신은 추가 할 필요가 있기 때문에, 당신은 데이터베이스에 한 기록이있는 경우에만 작동주의 하시고 WHERE id=xx또는 유사한 무언가를 얻기 위해 하나의 행이 아닌 더. 또한 다음과 같은 ID에 액세스 할 수 있습니다.$row['id']


PDO사용하면 다음과 같이 할 수 있습니다.

$db = new PDO('mysql:host=hostname;dbname=dbname', 'username', 'password');

$stmt = $db->query('select id from games where ...');
$id = $stmt->fetchColumn(0);
if ($id !== false) {
    echo $id;
}

PDO::query()(결과를 확인하거나 대신 예외를 던지도록 PDO에 지시하여) 쿼리를 정상적으로 실행 하는지 확인해야합니다.


작업을 수행하는 일반적인 방법 인 자동 증가 기본 키를 사용한다고 가정하면 다음을 사용하여 데이터베이스에 입력 한 마지막 행의 키 값에 액세스 할 수 있습니다.

$userID = mysqli_insert_id($link);

그렇지 않으면 이메일 주소와 같이 찾으려고하는 행에 대한 자세한 정보를 알아야합니다. 테이블 구조를 모르면 더 구체적으로 말할 수 없습니다.

어느 쪽이든 SELECT쿼리 를 제한 하려면 다음 WHERE과 같은 명령문을 사용 하십시오. (일반적인 예)

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];

(구체적인 예) 또는 더 구체적인 예 :

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE userID = 1"));
$userID = $getID['userID'];

경고! SQL은 모든 행을 선택하고 (WHERE 절이 "WHERE 1"을 가정하지 않음!) 많은 행이있는 경우 응용 프로그램을 막기 때문에 좋은 생각이 아닙니다. (1이 할 때 1,000 개의 행을 선택하는 이유는 무엇입니까?) 따라서 하나의 행만 선택하는 경우 LIMIT 절을 지정해야합니다.

$sql = "SELECT id FROM games LIMIT 1";  // Select ONLY one, instead of all
$result = $db->query($sql);
$row = $result->fetch_assoc();
echo 'Game ID: '.$row['id'];

이 차이는 MySQL 이 첫 번째 일치하는 레코드 선택 하도록 요구하므로 테이블 순서가 중요하거나 WHERE 절을 사용해야합니다. 그러나 모든 레코드와 출력 행 번호 1을 얻는 것보다 하나의 레코드를 찾는 데 메모리와 시간이 훨씬 적습니다.


객체 지향 스타일에 대한 답변이 하나 더 있습니다. 이 솔루션을 찾았습니다.

$id = $dbh->query("SELECT id FROM mytable WHERE mycolumn = 'foo'")->fetch_object()->id;

하나의 아이디 만 돌려줍니다. 디자인이 올바른 제품인지 확인하십시오.


LIMIT 1. 사용하기 쉽습니다.

$rows = $db->query("select id from games LIMIT 1");
$row  =  $rows->fetch_object();
echo $row->id;

먼저 데이터베이스에 연결합니다. 그런 다음 쿼리 문자열을 작성합니다. 그런 다음 쿼리를 시작하고 결과를 저장하고 마지막으로 페치 메소드 중 하나를 사용하여 결과에서 원하는 행을 페치합니다.

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database',$link);
$sql = 'SELECT id FROM games'
$result = mysql_query($sql,$link);

$singleRow = mysql_fetch_array($result) 
echo $singleRow;

편집 : 죄송합니다. 데이터베이스 연결을 잊어 버렸습니다. 지금 추가


PHP를 사용하여 데이터베이스에서 단일 레코드를 검색하는 일반적인 방법을 제외하고 '가장 좋은 방법'은 다음과 같습니다.

mysqli로

$sql = "SELECT id, name, producer FROM games WHERE user_id = 1";
$result = $db->query($sql);
$row = $result->fetch_row();

Zend 프레임 워크

// 테이블 클래스 내부

$select = $this->select()->where('user_id = ?', 1);  
$row = $this->fetchRow($select);

가장 쉬운 방법은 mysql_result. 시간을 절약하기 위해 다른 답변에서 아래 코드 중 일부를 복사했습니다.

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database',$link);
$sql = 'SELECT id FROM games'
$result = mysql_query($sql,$link);

$num_rows = mysql_num_rows($result);

// i is the row number and will be 0 through $num_rows-1
for ($i = 0; $i < $num_rows; $i++) {
    $value = mysql_result($result, i, 'id');
    echo 'Row ', i, ': ', $value, "\n";
}

사용하기 쉬운 인터페이스에 네이티브 SQL 메서드를 포함하는 ezSQL 데이터베이스 라이브러리 의 철학이 정말 마음에 듭니다 .

데이터베이스에서 단일 값을 가져 오는 것은 간단합니다.

  $id = $db->get_var("SELECT id FROM games WHERE ...");

또한 단일 행, 열 또는 행 집합을 쉽게 가져올 수 있습니다.


mysql_result 가 MySQL 결과 집합에서 한 셀의 내용을 검색하는 쉬운 방법 이라는 데 동의합니다 . 작은 코드 :

$r = mysql_query('SELECT id FROM table') or die(mysql_error());
if (mysql_num_rows($r) > 0) {
    echo mysql_result($r); // will output first ID
    echo mysql_result($r, 1); // will ouput second ID
}

이것은 간단합니다

//Read table records
$show = mysqli_query($link,"SELECT * FROM table_name");
while($row = @mysqli_fetch_object($show))
{
//Read a row/record
echo $row->FIELD1."<br>";
echo $row->FIELD2."<br>";
echo $row->FIELD3."<br><hr>";
}

PHP 목록을 사용하여 MySQL 데이터베이스에서 단일 레코드를 가져 오는 쉬운 방법

SQL 쿼리는 SELECT user_name from user_table WHERE user_id = 6

위 쿼리의 PHP 코드는 다음과 같습니다.

$sql_select = "";
$sql_select .= "SELECT ";
$sql_select .= "  user_name ";
$sql_select .= "FROM user_table ";
$sql_select .= "WHERE user_id = 6" ;

$rs_id = mysql_query($sql_select, $link) or die(mysql_error());
list($userName) = mysql_fetch_row($rs_id);

참고 : 목록 개념은 다중 행이 아닌 단일 행 가져 오기에 적용되어야합니다.


LIMIT 1결국 SQL이 추가되어 최적화되면 더 좋습니다 .

$query = "select id from games LIMIT 1";


그래서 대답은 (php 5.6.3에서 작동) :

첫 번째 행의 첫 번째 항목을 얻으려면 (ID 열이 아니더라도) :

queryExec($query) -> fetch_array()[0];

첫 번째 행 (DB에서 단일 항목)을 가져 오려면

queryExec($query) -> fetch_assoc();

첫 번째 행에서 정확한 열을 원할 경우

queryExec($query) -> fetch_assoc()['columnName'];

또는 쿼리를 수정하고 첫 번째 서면 방식을 사용해야합니다. :)


$db = new mysqli('localhost', 'tmp', 'tmp', 'your_db');  
$db->set_charset('utf8');
if ($db->connect_errno)
    throw new Exception('MySQL: ('.$db->connect_errno.') '.$db->connect_error);

if ($row = $db->query("SELECT id FROM games LIMIT 1")->fetch_row()) //NULL or array
    $id = $row[0];

Say that you want to count the rows in an existing table:

Use mysql_result with only one parameter set to "0"

Like this:

$string = mysql_result(
          mysql_query("SELECT COUNT(*) FROM database_name.table_name ")
,0);

ps.put ( ` ) around database_name and table_name

var_dump($string);

// string(1) "5" //if it only has 5 records in the table

Note: if you query for something else like

SELECT * FROM database.table LIMIT 1

and the table has more than one column then you WILL NOT get an array() in your var_dump you will get the first column only


function getSingleRow($table, $where_clause="", $column=" * ",$debug=0) {
    $SelectQuery = createQuery($table, $where_clause, $column);

    $result = executeQuery($SelectQuery,$debug);
    while($row = mysql_fetch_array($result)) {
        $row_val = $row;
    }
    return $row_val;
}

$results = $mysqli->query("SELECT product_code, product_name, product_desc, product_img_name, price FROM products WHERE id = 1");

I could get result by using following:

$resu = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM employees1 WHERE pkint =58"));
echo ( "<br />". $resu['pkint']). "<br />" . $resu['f1'] . "<br />" . $resu['f2']. "<br />" . $resu['f3']. "<br />" . $resu['f4' ];

employees 1 is table name. pkint is primary key id. f1,f2,f3,f4 are field names. $resu is the variable shortcut for result. Following is the output:

<br />58
<br />Caroline
<br />Smith
<br />Zandu Balm

$username=$_POST['username'];
$password=$_POST['password'];
$SQL = "SELECT * FROM user where user_name ='".$username."' AND password = '".$password."'";
$result = mysql_query($SQL);
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
$result = mysql_fetch_assoc($result);
$user_id = $result['user_id'];
echo $user_id;

ReferenceURL : https://stackoverflow.com/questions/811153/php-simple-way-to-read-single-record-from-mysql

반응형