选择“不给出结果的位置”


Select Where giving no result

我想从记录中选择一个字段值,其中记录中的另一个值与我指定的值匹配。

"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 手册。