我想从记录中选择一个字段值,其中记录中的另一个值与我指定的值匹配。
"SKU"是唯一的,它不是PK,但它是唯一的。我只从表中选择一个字段(代码),因此变量$gemCode应仅包含该 1 个值。但是在回显上,它要么不输出任何类似于以下代码的内容,要么如果我确实指定了字段"$gemCode['代码'],它只会弹出我以前从未见过的"资源 ID #8"。
$gemCode = mysql_query("SELECT Code FROM stock WHERE SKU = 'TN-YKJI-ESWB'");
echo "Gem Code: ".$gemCode."<br>";
此代码处于循环中,对于它将从中获取 SKU 值的文件的每一行。尽管即使代码中没有循环(从文件中获取的变量等),它确实给出的输出,但"资源 ID #8"数字从 8 开始的每个循环都会上升:
Gem Code: Resource id #8
Gem Code: Resource id #9
Gem Code: Resource id #10
Gem Code: Resource id #11
Gem Code: Resource id #12
Gem Code: Resource id #13
Gem Code: Resource id #14
Gem Code: Resource id #15
我遇到了一些问题,以前不知何故,我的表中的数据后面有空格,所以需要"LIKE '%value%'",尽管我已经检查过并且有问题的值没有这个,所以它不像我从技术上不存在的值中寻找。
还应该提到我确实有:
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('amazondb', $conn);
我真的很困惑,我以为这只是一个简单的选择。
非常感谢任何帮助,谢谢 - 汤姆
如果要数据库结果,则需要使用 mysql_fetch_assoc($gemCode)。
$gemCode = mysql_query("SELECT Code FROM stock WHERE SKU = 'TN-YKJI-ESWB'");
$gemArr = mysql_fetch_assoc($gemCode);
print_r($gemArr);
但是,除了"这就是你这样做的方式"之外,你应该真正考虑使用mysqli_而不是mysql。如果你愿意接受学习PDO的挑战,你应该尝试使用它(是的,甚至超过mysqli_)。
你需要获取数据。
$gemData = mysql_query("SELECT Code FROM stock WHERE SKU = 'TN-YKJI-ESWB'");
$gemInfo = mysql_fetch_assoc($gemData);
echo "Gem Code: ".$gemInfo['Code']."<br>";
作为前面答案的补充,mysql_query() 返回资源,而不是字符串。
作为好的做法,我建议您从循环中删除mysql_query并使用"...其中SKU in ('TN-YKJI-ESWB', 'yourSecondKey', ..., 'yourNKey')",看看:
- mysql_result()
- mysql_fetch_row()
- mysql_fetch_array()
- mysql_fetch_assoc()
- mysql_fetch_object()
在 php.net 手册。