2012-10-30 5 views
0

저는 PHP/MySQL을 처음 사용하고 있으며 기본을 통해 작업 중입니다.하나의 필드를 구문 분석하여 MySQL의 다른 필드를 채 웁니다.

필드 및 데이터 :

txtProductBowlCode 
data examples: OakSc07-001, MapleTi07-030, MapleTi07-034, BlackLimba07-002, AshSc07-017 

txtProductPrimarySpecies 
data examples: Oak, Maple, Maple, BlackLimba, Ash 

나는 2 개 필드가 테이블 tblsplintersbowlinventory로 (내 윈도우 7에서는 작동하지 않습니다 액세스 2000에서 이동하는 것이) MySQL 데이터베이스의 scwdb이

즉, txtProductPrimarySpecies 필드에 종을 기록하고 싶습니다. 오류 및 인쇄 "완료"를 표시하지 않습니다,

<?php 
$con = mysql_connect("localhost","xxxxxxx","zzzzzzz"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("scwdb", $con); 

$species = 'Maple'; 
mysql_query("UPDATE tblsplintersbowlinventory WHERE txtProductBowlCode LIKE $species SET txtProductPrimarySpecies=$species%"); 
echo "done"; 

mysql_close($con); 
?> 

실행하는 것,하지만 난 데이터베이스를 검사 할 때 나는 어떤 변화를 볼 수 없습니다 :

나는 다음과 같은 PHP 스크립트를 시도했다.

무엇이 누락 되었습니까?

이 데이터베이스에는 600 개가 넘는 레코드가 있으며,이 새로운 txtProductPrimarySpecies 필드를 추가하여 검색에 도움을주고 그릇에 특정 정보가있는 전체 코드를 남겨 두었습니다. 이 작업을 수행하는 데 필요한 몇 가지 종이 있으므로 종 목록을 실행하는 루프를 사용할 계획입니다.

종의 목록을 읽으려면 루프를 어떻게 코딩합니까?

좋아요,이 방법을 찾았습니다! 이 목록을 사용하지 않는 것이 더 의미가 만든

<?php 
$con = mysql_connect("localhost","xxxxxx","zzzzzzz"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("scwdb", $con); 

$species = 'Maple'; 
$result = mysql_query("UPDATE tblsplintersbowlinventory SET txtProductPrimarySpecies = '$species' WHERE txtProductBowlCode LIKE '$species%'"); 
$result = mysql_query("SELECT * FROM tblsplintersbowlinventory WHERE txtProductBowlCode LIKE '$species%'"); 

echo "<table border='1'> 
<tr> 
<th>Index</th> 
<th>Bowl Code</th> 
<th>Species</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['intProductID'] . "</td>"; 
    echo "<td>" . $row['txtProductBowlCode'] . "</td>"; 
    echo "<td>" . $row['txtProductPrimarySpecies'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 
echo "done"; 

mysql_close($con); 
?> 

이 일을하고,이 한 시간 촬영 때부터 수동으로 ...은 $ 종의 값을 변경하고 데이터베이스에있는 나무의 종의 각각을 실행 그리고 그것을 통해 반복 - 어쨌든 하나 또는 두 개의 종을 그리워하고 바인딩 된.

+2

SET가 ... ... 당신은 MySQL의 오류를 검사하지 않는 WHERE 전에해야 - 그래서 당신은 어떤 –

+0

코드에서 꽤 많은 오류가 있습니다 볼 수 없습니다 ... 당신은 최대 혼합 'LIKE'와'SET'에 대한 인수뿐만 아니라'SET'과'WHERE'의 순서는 문자열 값을 시동기의 작은 따옴표로 묶지 않았습니다. 또한 [mysql_ *] (http://news.php.net/php.internals/53799) 확장 버전은 더 이상 사용되지 않습니다. – doublesharp

+0

새로운 코드를 작성하기 위해'mysql_ *'함수를 사용하지 마십시오. 더 이상 유지 관리되지 않으며 커뮤니티가 [지원 중단 프로세스] (http://goo.gl/q0gwD)를 시작했습니다. [빨간색 상자] (http://goo.gl/OWwr2)를 참조하십시오. 대신 [prepared statements] (http://goo.gl/orrj0)에 대해 알아야하며 [PDO] (http://goo.gl/TD3xh) 또는 [MySQLi] (http://php.net/)를 사용해야합니다. mysqli). 어떤 것을 결정할 수 없다면 [이 기사] (http://goo.gl/YXyWL)가 도움이 될 것입니다. PDO를 선택한 경우 [여기 좋은 지침서] (http://goo.gl/b2ATO)를 참조하십시오. [PHP에서 mysql 함수를 사용해야하는 이유는 무엇입니까?] (http://goo.gl/J5jAo) – Daedalus

답변

0

set without %where with % 앞에 와야합니다. 또한 문자열 형식이므로 매개 변수를 따옴표로 묶어야한다고 생각합니다.

mysql_query("UPDATE tblsplintersbowlinventory 
       SET txtProductPrimarySpecies='$species' 
       WHERE txtProductBowlCode LIKE 'CONCAT($species, '%')'"); 
+0

나는이 코드를 시도했지만 여전히 작동하지 않습니다 ... 나는 CONCAT 명령이 "concat 연결 또는 두 개의 열에서 결과 합치기 "- 내가하는 일은 생각하지 않습니다 ... 내가하고 싶은 것은 종 (메이플)을 꺼내 Ti07-030을 놓고 txtProductPrimarySpecies를 설정하는 것입니다. Maple에 필드. – Stephen

+0

오류가 표시되지 않고 단순히 실행되고 '완료'가 인쇄됩니다. 내가 그것을 갱신 한 후에 데이터베이스를 볼 때 아무 변화가 없다 - 필드는 비어있다. – Stephen

+0

@Stephen 지금 어떤 오류가 있습니까? CONCAT이'$ 種 '매개 변수를'% '에 추가합니다. 나는 왜 당신이 세트에서 같은 param을 사용하는지 이해하지 못했습니다. 설명해 주시겠습니까? –

관련 문제