我的表格看起来像这样:
我正在尝试使用一个过程来获取与给定CategoryName具有相同CategoryID的所有SubCategoryNames:这一个:
CREATE PROCEDURE getSubCategory(IN category TEXT) READS SQL DATA
BEGIN
SELECT `SubCategoryName` FROM `sub_category` WHERE `CategoryID` = (SELECT `CategoryID` FROM `category` WHERE `CategoryName` = category);
END
出于某种原因,当我尝试从PHP代码调用此过程时,使用PHP变量,如下所示:
$result = $connection->query($connection->real_escape_string("CALL `jcarillo_db`.getSubCategories(" . $superCategory . ")"));
// based on that, print the appropriate menu
if ($result)
{
// print an <option> for each row in the result set (remember, $result will have one entry per row!)
while ($row = $result->fetch_row())
{
require_once("argumentParser.php");
printf('<option name="%sOption" value="%s">%s</option>\n', toCamelCase($row[0]), $row[0], $row[0]);
}
// don't forget to free result set!
$result->close();
}
else
{
echo "Fetch failed(" . $connection->errno . ")" . $connection->error;
}
&#34;提取失败&#34;得到回应,而不是结果!然而,出于某种原因,当我尝试从数据库中调用相同的存储过程时(即通过phpMyAdmin),它可以工作!我到底做错了什么?!?! $connection
设置正确,我知道这是因为我尝试从类别表中回显CategoryNames就可以了!
答案 0 :(得分:0)
这里的问题是你试图使用String参数调用该函数,并且在不让MySQL知道它的字符串的情况下传递它。
请改为尝试:
$result = $connection->query("CALL `jcarillo_db`.getSubCategories('".$connection->real_escape_string($superCategory)."')");