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

I am new to PHP/MySQL and am working my way through the basics.

I have a MySQL database scwdb (that I moved from Access 2000 which my Windows 7 won't work with) with a table tblsplintersbowlinventory which has 2 fields:

fields and data:

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

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

In other words, I want to record just the species in the txtProductPrimarySpecies field.

I tried the following PHP script:

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

It seems to run, does not show an error and prints "done", but when I check the database I don't see any changes.

What am I missing?

This db has over 600 records, and I added this new txtProductPrimarySpecies field to make my searches easier while leaving the full code which has specific info on the bowl. There are several species that I need to do this to, so I plan on using a loop to run through a list of species.

How would I code that loop to read a list of species?

OK, I found the way to make this work!

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

This worked, and I manually changed the $species value and ran it for each of the species of wood in the database...since this was a one time shot it made more sense not to use a list and loop through it - I was bound to miss one or two species anyway.

dsifjgogw48491752
dsifjgogw48491752 “请不要使用mysql_*函数来编写新代码。”...很有意思,因为我昨晚复制了w3schools.com/php/php_mysql_connect.asp中的代码...
7 年多之前 回复
douxu2467
douxu2467 请不要使用mysql_*函数来编写新代码。它们不再维护,社区已开始弃用过程。看到红色的盒子?相反,您应该了解准备好的语句并使用PDO或MySQLi。如果您无法确定哪个,本文将对您有所帮助。如果你选择PDO,这是一个很好的教程。另请参阅为什么我不应该在PHP中使用mysql函数?
7 年多之前 回复
douziqian2871
douziqian2871 您的代码中存在相当多的错误...您混淆了SET和WHERE的顺序以及LIKE和SET的参数,没有将字符串值放入启动器的单引号中。mysql_*扩展也已被弃用。
7 年多之前 回复
duanjiati1755
duanjiati1755 SET..应该在WHERE之前....你没有检查mysql错误-所以你没有看到任何
7 年多之前 回复

1个回答



不应该在没有%</ code>的情况下设置,而不是在%</ code>之前。 另外我认为你的参数应该用引号包装,因为它是字符串类型。</ p>

  mysql_query(“UPDATE tblsplintersbowlinventory 
SET txtProductPrimarySpecies ='$ species'
WHERE txtProductBowlCode LIKE 'CONCAT($ species,'%')'“);
</ code> </ pre>
</ div>

展开原文

原文

Shouldn't the set without % come before where with %. Also I think your parameter should be wrapped with a quote as it is string type.

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

dongwo5449
dongwo5449 一旦你回来,请让我知道。 我们将聊天并尝试解决您的问题。
7 年多之前 回复
dongliu8559
dongliu8559 好吧,我刚刚意识到'CONCAT($ species,'%')'做了什么......它增加了$物种结束的百分比......当我定义$物种时,我可以添加%...
7 年多之前 回复
dtot74529
dtot74529 我在查询之前设置$ species = Maple。 我使用WHERE查找带有Maple的txtProductBowlCode字段,然后将数据Maple放在txtProductPrimarySpeciesfield中。 正如我所说,我没有收到任何错误消息,它只是运行到最后并在结尾处打印出Done一词。
7 年多之前 回复
dtml3340
dtml3340 什么是当前值以及您要更新的内容是什么? 我会更新查询。
7 年多之前 回复
douxu3732
douxu3732 你现在得到什么错误? CONCAT将'%`附加到你的param $种类。 我不明白为什么你在set和where中使用相同的param。 你能解释一下吗?
7 年多之前 回复
donglvhe7591
donglvhe7591 没有错误,它只是运行并打印'完成'。 当我查看数据库(更新后)没有变化 - 字段为空。
7 年多之前 回复
drgzmmy6379
drgzmmy6379 我尝试了这段代码,仍然无法正常工作......我在另一个问题上看到,CONCAT命令意味着“concat是连接,或者是从两列加入结果” - 我不认为这就是我想要做的。 ..我想要做的是拔出物种(枫树)并放下Ti07-030并将txtProductPrimarySpecies字段设置为Maple。
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问