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(*) FROMdatabase_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
'development' 카테고리의 다른 글
Docker가 변경된 경우에만 pip requirements.txt를 실행하는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
jq를 사용하여 JSON 문자열 구문 분석 (0) | 2020.12.28 |
현재 수업과 방법을 얻으시겠습니까? (0) | 2020.12.28 |
Android 활동 레이블 및 레이블 표시 줄을 비활성화 / 제거하는 방법은 무엇입니까? (0) | 2020.12.28 |
OpenGL 텍스처 좌표는 어떻게 작동합니까? (0) | 2020.12.28 |