0

私は PHP/MySQL を初めて使用し、基本的な方法で作業しています。

2 つのフィールドを持つテーブル tblsplintersbowlinventory を持つ MySQL データベース scwdb (Windows 7 では動作しない Access 2000 から移動したもの) があります。

フィールドとデータ:

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

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

つまり、txtProductPrimarySpecies フィールドに種だけを記録したいと考えています。

次のPHPスクリプトを試しました:

    <?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);
?>

実行されているようで、エラーは表示されず、「完了」と出力されますが、データベースを確認しても変更はありません。

私は何が欠けていますか?

このデータベースには 600 を超えるレコードがあり、この新しい txtProductPrimarySpecies フィールドを追加して、ボウルに特定の情報を含む完全なコードを残しながら、検索を容易にしました。これを行う必要がある種がいくつかあるため、ループを使用して種のリストを実行する予定です。

種のリストを読み取るには、そのループをどのようにコーディングすればよいでしょうか?

OK、私はこれを機能させる方法を見つけました!

    <?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);
?>

これは機能し、手動で $species の値を変更し、データベース内の木材の種類ごとに実行しました...これは一度だけのショットだったので、リストを使用せずにループする方が理にかなっていました-私はいずれにせよ、1 つまたは 2 つの種を見逃すことになります。

4

1 に答える 1

0

set without %前に来るべきではありませんwhere with %。また、パラメータは文字列型なので引用符で囲む必要があると思います。

 mysql_query("UPDATE tblsplintersbowlinventory 
                SET txtProductPrimarySpecies='$species' 
                WHERE txtProductBowlCode LIKE 'CONCAT($species, '%')'");
于 2012-10-30T05:30:26.683 に答える