我对在php中使用mysql非常陌生,下面是我在网上找到的检索结果的方法:
$con = mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Cannot connect to the database");
$query = "SELECT ... FROM ... WHERE ID=5";
$result = mysql_query($query);
$num = mysql_num_rows($result);
if ($num > 0 ) {
// do stuff
} else {
// inform user
}
mysql_close($con);ID是我表的自动生成的非空主键。现在,我的桌子上有20张唱片。如果我输入一个与这些现有记录相对应的ID值,一切都进行得很好,并按预期工作。
但是,如果我输入的ID值为54或与我现有的20个记录中的任何记录不相对应的任何记录(意味着不存在这样一个ID的行),我希望$num <= 0和条件语句将转到else块。但我发现情况并非如此--它仍然会转到TRUE分支,然后转到// do stuff块,所以我在phpmyadmin上运行了查询,发现我在所有字段中都得到了与NULL完全相同的1行。这就是为什么$num要返回1,也就是>0。
问题:
,
mysql_store_result和mysql_free_result,但是没有足够的信息使它们正常工作。就像在我的代码中放置它们一样,为什么我可以在没有它们的情况下在php中完成我现在需要做的事情呢?mysql_close之前循环通过mysql_close进程。这是“最佳实践”吗?太感谢了,伙计们,你们都太棒了。
更新:包括整个查询的
SELECT Dyna,
Floater,
Can.Label as CanLabel,
GROUP_CONCAT(DISTINCT Vanity.Name SEPARATOR ', ') as VanityName,
GROUP_CONCAT(DISTINCT Univ SEPARATOR ', ') as Univ,
ShopDate,
ManuDate,
FlipTran,
Remarks,
Bib,
Abbrev,
ShopChar,
Comment,
Value,
ERUSD
FROM
(Vanity INNER JOIN ((Vanity INNER JOIN Shoppy ON Vanity.VanityID = Shoppy.VanityID) INNER JOIN ShoppyVanity ON Shoppy.ID = ShoppyVanity.ID) ON Vanity.MethodID = ShoppyVanity.MethodID) INNER JOIN UAC ON (Shoppy.VanityID = UAC.VanityID) AND (Vanity.VanityID = UAC.VanityID)
WHERE (((Shoppy.ID)=5))发布于 2011-10-15 07:03:07
如果使用组聚合函数(如GROUP_CONCAT ),MySQL将在整个结果集中创建一个组。如果没有结果,它将在NULL值上运行它们,从而导致空行。尝试将其添加到查询的末尾,以消除其中没有有效数据的行:
HAVING VanityName IS NOT NULL
发布于 2011-10-15 06:49:37
$num = mysql_numrows($result);把它改成
$num = mysql_num_rows($result);发布于 2011-10-15 06:50:20
试试这个:
SELECT Dyna,
Floater,
Can.Label as CanLabel,
GROUP_CONCAT(DISTINCT Vanity.Name SEPARATOR ', ') as VanityName,
GROUP_CONCAT(DISTINCT Univ SEPARATOR ', ') as Univ,
ShopDate,
ManuDate,
FlipTran,
Remarks,
Bib,
Abbrev,
ShopChar,
Comment,
Value,
ERUSD
FROM
Vanity INNER JOIN Shoppy ON (Vanity.VanityID = Shoppy.VanityID)
INNER JOIN ShoppyVanity ON (Shoppy.ID = ShoppyVanity.ID)
INNER JOIN ShoppyVanity ON (ShoppyVanity.MethodID=Vanity.MethodID)
INNER JOIN UAC ON (Shoppy.VanityID = UAC.VanityID AND Vanity.VanityID =UAC.VanityID)
WHERE Shoppy.ID=5https://stackoverflow.com/questions/7776167
复制相似问题