2013-05-22 3 views
0

사용자 입력에서 LIKE 쿼리를 사용하여 모든 데이터를 검색하고 데이터베이스와 일치 시키려고하면 작동하지만 하나의 레코드 만 반환하지만 테이블에는 많은 레코드가 있습니다. 여러 행을 검색하지 않는 데이터베이스에서 MySQL 검색

그것을 찾을 수있는 가장 가까운 기록을 반환

,

그래서 ItemDesc 필드는 문자가 포함되어있어이 개 기록이 예를 들어 말한다 '는'I '는'내 입력 상자와하는 제출 클릭을 검색 할 때 둘 다 반환해야 할 때 가장 가까운 (가장 초기에 생성 된) 레코드를 반환합니다.

<?php 
$username = "a3355896_guy"; 
$password = "++++++"; 
$hostname = "mysql5.000webhost.com";  
$dbh = mysql_connect($hostname, $username, $password) or die("Unable to connect to  MySQL"); 

mysql_select_db("a3355896_book") or die("Unable to connect to database"); 

$ItemDesc = $_POST['ItemDesc']; 
$query = "select * from StockItems where ItemDesc LIKE '%$ItemDesc%'"; 
$result=mysql_query($query); 
$num=mysql_num_rows($result); 
mysql_close(); 
?> 

죄송는 검색을 포함했는데 :

<?php 
if ($num>0) 
{ 
echo "<center><table border=1><tr><th>Item Code</th><th>Item Desc</th>"; 
echo "<th>Item Stock Qty</th>"; 
echo "<th>Item Unit Price</th><th>Item Category</th></tr>"; 
$ItemCode = mysql_result($result,$i,"ItemCode"); 
$ItemDesc = mysql_result($result,$i,"ItemDesc"); 
$ItemStockQty = mysql_result($result,$i,"ItemStockQty"); 
$ItemUnitPrice = mysql_result($result,$i,"ItemUnitPrice"); 
$ItemCategory = mysql_result($result,$i,"ItemCategory"); 
echo "<tr><td>$ItemCode</td><td>$ItemDesc</td><td align=right>"; 
echo "$ItemStockQty</td>"; 
echo "<td align=right>$ItemUnitPrice</td>"; 
echo "<td>$ItemCategory</td></tr>"; 
echo "</table></center>"; 

} 
else 
{ 
echo "<form name='DeleteStock2'>"; 
echo "<p> Sorry, $ItemDesc does not exist!<p>"; 
echo "<input type='button' value='Leave' onclick='history.go(-1)'>"; 
} 

>

+0

찾고있는 테이블 데이터 중 일부를 제공하십시오. Google은 사용자가 검색 대상을 모르는 경우 문제를 진단하기가 어렵습니다. – dudewad

+1

데이터를 검색하려는 위치는 어디입니까? 결과에서 행의 수를 얻으려면 mysql_num_rows 만 사용하면된다. – andrewsi

+0

죄송합니다. 검색 결과가 –

답변

1

당신이 결과 집합을 반복 할 필요가 여기 - 당신은 실제로 당신의 데이터에 액세스하지 않습니다?.

$setLength = mysql_num_rows($result); 
for($i = 0; $i < $setLength; $i++){ 
    //Here, mysql_fetch_assoc automatically grabs the next result row on each iteration 
    $row = mysql_fetch_assoc($result); 
    //do stuff with "row" 
} 

당신이 그렇게하지 않는 한 당신은 당신의 발끈에 그것을 포함시키지 않기로 선택했습니다. 저희에게 알려주십시오 :)

- 편집 - 먼저, 습관에 대해 사과 드리며, mysqli 대신에 mysql_fetch_assoc을 사용하는 것이 좋습니다.

fetch_assoc 또는 fetch_array 함수를 사용하여 문제를 해결할 수 있습니다. 내가 사용한 방법을 본 적이 한 번도 없었습니다. 잠시 사용하지 않는 것 같습니다. 여기에서 확인하십시오 : http://php.net/manual/en/mysqli-result.fetch-assoc.php

+0

죄송합니다. 검색 후 편집했습니다. –

+1

예 - 사용되지 않는 기능을 사용 중입니다. http://php.net/manual/en/function.mysql-result.php 사실, 어쨌든 당신은 mysqli 계열의 기능으로 업그레이드해야한다는 것을 깨달았다. 이 대답을 편집 할 것입니다 – dudewad

+0

fetch_assoc 또는 fetch_array 함수를 사용하기 위해 현재 검색 코드를 변경하는 방법을 알지 못합니다. –

관련 문제