解析一个字段以填充MySQL中的另一个字段

时间:2012-10-30 05:20:56

标签: php mysql

我是PHP / MySQL的新手,正在努力学习基础知识。

我有一个MySQL数据库scwdb(我是从我的Windows 7无法使用的Access 2000中移动的),带有一个包含2个字段的表tblsplintersbowlinventory:

字段和数据:

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字段,使我的搜索更容易,同时留下在碗上有特定信息的完整代码。我需要做几个物种,因此我计划使用一个循环来运行一系列物种。

我如何编写该循环来读取物种列表?

好的,我找到了做这项工作的方法!

    <?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 个答案:

答案 0 :(得分:0)

set without %不应该在where with %之前。另外我认为你的参数应该用引号包装,因为它是字符串类型。

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