如何确定指定的字符串是否在特定的MySQL列中?(还有可能是教程网站?)

4
这是一个相当简单的问题。基本上,我有一个程序将硬件ID作为GET数据发送到我的PHP脚本中。我需要让PHP脚本检查硬件ID是否在特定的MySQL列中,如果是,则{继续脚本},否则{退出();}。
问题是我不太擅长MySQL,也不知道怎么做这个。然而,我觉得我现在应该知道这个,所以如果有人能给我提供一个MySQL的好教程网站,那就更好了,最好是能“通俗易懂”的那种。一些“降低难度”的教程。我并不傻,只是容易分心,如果所有它做的只是展示代码而不解释它,我就不会学会。如果您没有任何教程网站,请帮我解决第一个问题,并尝试寻找教程。
编辑:注意到看一下我的数据库设置可能会有所帮助。 我有一个名为“hwids”的表。 这个表有3个列:“id”、“hwid”和“paypal”。
(他们从我这里购买程序,我将他们的HWID添加到数据库中,这样他们就可以使用程序。如果他们退款并试图欺骗我,我可以轻松地检查哪个HWID分配给了退款的paypal,然后通过管理页面将其从系统中删除)

1
+1,我赞赏你不仅仅是想要得到问题的答案,还要寻求教程建议来提高你的MySQL技能。通常人们只想要答案,似乎并不在意是否提高自己的技能。 - Anthony Forloney
1
谢谢你,安东尼。是的,回答我的问题是让这个脚本准备好的主要目标,但我最终想成为这个网站上回答问题的人之一,当然,也能够完全编写代码而不需要外部帮助。 - Rob
可能还有助于查看您的数据库设置。这样,您的答案可以轻松地与您的问题交织在一起。 - Anthony Forloney
谢谢安东尼,我编辑了我的帖子。那就是你想要的吗? - Rob
没错,这很完美。我可以贴出一个非常低效的解决方案作为例子,希望其他人能够提供更有效率的解决方案。 - Anthony Forloney
2个回答

2
当我开始学习PHP/MySQL时,我非常喜欢O'Reilly出版的相关书籍。你可能想查看Learning PHP, MySql, and JavascriptPHPMySql的官方网站提供了许多好的链接和信息,以及文档。Tizag有一个有用的教程。
为了回答你的问题,你可以执行一个选择查询,检查找到的行数是否大于零。例如:
$query = "SELECT * FROM hwids WHERE hwid = 'hardware_id'";
$result = mysql_query($query);
$num = mysql_num_rows($result);
if ($num > 0)
{
    // continue script
}
else 
{
    // exit/inform user
}

嗯,我从来没有想过要计数并确保它大于0。不过,还有其他选项吗? - Rob
@JYelton,正是我的做法。 - Anthony Forloney
@Rob: 你可以读取结果集并迭代行,但这只有在有多个匹配硬件 ID 的行时才是不必要的。在这种情况下,您可能会检查另一列的内容是否有效。例如,如果两行具有相同的硬件ID,则可能希望确保某些其他列满足条件(比如说有效保修之类的东西)。 - JYelton
@Rob:我再次编辑这个问题,因为查询只会有一行,因为它正在进行计数。我开始编写 C# 的查询,考虑执行 ExecuteScalar。 :) - JYelton
啊,现在它更有意义了。谢谢您的帮助和教程链接。我会很快检查它们。 - Rob

2

要实现目标,需要完成以下步骤。将它们分解并逐一学习,可以帮助你提高注意力(没有不敬之意,我也有同样的问题)

实现目标所需的步骤:

  1. 连接到 MySql 数据库 - 参见 mysql_connect 和 mysql_select_db 的文档
  2. 验证您的输入(确保您具有有效的硬件ID)
  3. 准备查询 - 我建议使用类似于 $Sql=sprintf("Select [columnName] from [tableName] where [columnName]=%s", mysql_escape_string($hardwareID)); 的语句
  4. 使用 mysql_query($sql) 获取记录集 - 参见php.net的相关文档。
  5. 检查记录集是否为空,如果是,则退出脚本,可以使用 mysql_num_rows() 进行判断。

希望这能帮到你,我想给你推荐一个资源:http://tuxradar.com/practicalphp,特别是第9章。

以上内容与其他人提供的基本相同,只是我打字速度有点慢 :)


嘿,我一直在读那本《Practical PHP》书。不仅仅是第九章,我想彻底读完,所以我从开头开始阅读。我很喜欢它,已经学到了一些新的东西,谢谢。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接