2011-09-13 2 views
0

임의의 숫자를 생성하는 PHP 함수가있는 경우 해당 변수를 WHERE 절의 sql 문에 전달할 수 있습니까? CodeIgniter를 사용하고 있습니다. 따라서이 코드는 구문을 사용합니다.랜덤 데이터베이스 행 선택 WHERE ID = PHP 함수에 의해 생성 된 임의의 값

$random = rand(1, 572); 
$result = $this->db->query(' SELECT part1, part2, _id FROM `questions` WHERE `_id` >= '$random' LIMIT 0,1 '); 

이 경우에도 가능합니까?

편집 : 나는 내 페이지에 걸쳐 그것을 여러 번 호출해야하기 때문에 나는 PHP는 임의의 숫자를 실행하려는 이유는, 그것은 SQL 쿼리를 사용하여 다른 데이터베이스에 다른 통화를 할 필요를

+0

당신이 임의의 납입이 있는지 어떻게 알 수 있습니까? – Jakub

+1

다른 솔루션을 사용하도록 사람들을 설득시키지 마십시오. 어쨌든 올바른 방향으로 가고 있습니다. http://jan.kneschke.de/projects/mysql/order-by-rand/ ... 그렇지 않으면 단지 문자열을 연결하는 법을 배우기 만하면됩니다 (PHP에서는 마침표 사용) – TehShrike

+0

제가 572 개의 행을 가지고 있다는 것을 알고 있기 때문에 지금. 앞으로는 아마도 커질 것입니다. 그래서 rand() 함수에 내 테이블의 최대 행 수를 전달하는 가장 좋은 방법은 무엇입니까? –

답변

1

예 당신이 문자열 변수 연결할 경우에 가능하다 : 당신이 원하는 것은 임의의 행을 선택하는 경우

$query = "SELECT 
      part1, 
      part2, 
      _id 
      FROM 
      questions 
      WHERE _id >= " . $random . " LIMIT 0,1"; 
$result = $this->db->query($query); 

그러나, 당신은이 쿼리를 할 수 있습니다를

SELECT part1, part2, _id FROM questions ORDER BY RAND() LIMIT 1 

편집

내가 _id 무작위 될 것 이해하지만, 당신이 바로, rand()에 대한 minmax을 지정하는? 따라서 새 행을 삽입 할 때마다이 값을 변경해야합니다. 그렇지 않으면 rand()이 값을 너무 많이 반환하지 않도록하려면 두 개의 쿼리를 사용해야합니다. ORDER BY RAND()을 사용하면 두 가지 문제가 발생하지 않습니다. 쿼리에서 반환 된 _id 값을 가져와야합니다.

+0

죄송합니다, 제 편집을 읽어보십시오. 다른 전화 번호와 동일한 번호를 다른 데이터베이스에 사용해야합니다. –

+0

@Bert 질문에 선택된 ID를 사용하지 마십시오. –

+0

이것은 정확하게 그 것이다. 나는 그것을 연결하는 것을 잊었다. 나는 최대한 빨리 귀하의 답변을 받아 들일 것이며, stackoverflow는 대기 기간을 주어서 최상의 상태로 선택할 수 있습니다. –

0

이것은 문자열 외부에 작은 따옴표 대신 큰 따옴표를 사용하는 것일 수 있습니다.

$result = $this->db->query("SELECT part1, part2, _id FROM `questions` WHERE `_id` >= '$random' LIMIT 0,1 "); 
0

이 시도 :

$result = $this->db->query("SELECT part1, part2, _id FROM questions WHERE _id >= '".$random."' LIMIT 0,1 "); 
관련 문제