PHP和MySQL与HTML列表?
我试图为MySQL表中的每个元素创建一个HTML列表,但是我返回了一个错误,我不知道如何修复它。它表示“警告:mysql\u fetch\u assoc():在第214行的/home/rmbennin/htdocs/labs/dataDesign/dbLib.php中提供的参数不是有效的mysql结果资源” 此处的代码正在调用列表:PHP和MySQL与HTML列表?,php,html,mysql,list,Php,Html,Mysql,List,我试图为MySQL表中的每个元素创建一个HTML列表,但是我返回了一个错误,我不知道如何修复它。它表示“警告:mysql\u fetch\u assoc():在第214行的/home/rmbennin/htdocs/labs/dataDesign/dbLib.php中提供的参数不是有效的mysql结果资源” 此处的代码正在调用列表: global $connect; $output = ""; $output .= '<form method="post" action="sendD
global $connect;
$output = "";
$output .= '<form method="post" action="sendData.php">';
//process a query just to get field names
$query = "SELECT * FROM $tableName";
$result = mysql_query($query, $connect) or die(mysql_error());
if($tableName == "meals"){
$theField = mysql_fetch_field($result);
$fieldName = $theField->name;
$Name = fieldToList($tableName, "Name", "foodsID", $fieldName);
$output .= <<< HERE
* Name of meal:<br>
$Name<br>
* How many servings did you have?:<br>
<input type="number" name="Servings" required><br>
HERE;
global$connect;
$output=“”;
$output.='';
//处理查询只是为了获取字段名
$query=“从$tableName中选择*”;
$result=mysql\u query($query,$connect)或die(mysql\u error());
如果($tableName==“膳食”){
$theField=mysql\u fetch\u字段($result);
$fieldName=$theField->name;
$Name=fieldToList($tableName,“Name”,“foodsID”,$fieldName);
$output.=尝试将单元格名和表名放入
例如:
$query = "SELECT * FROM $tableName";
变成
$query = "SELECT * FROM `$tableName`";
而且
$query = "SELECT `$keyName`, `$fieldName` FROM `$tableName`";
其他可能的解决方案:global$connect;
是否也连接
其他可能的解决方案:尝试var\u dump($fieldName)
和在查询中传递的其他变量。它们是否与数据库中的变量相对应
此外,您应该停止使用mysql_*函数。它们已被弃用,可能会对系统的安全造成隐患。相反,请切换到PDO或Mysqli。这可能会帮助您决定选择哪一个。根据我的说法,您的查询中有一些错误。请更改以下部分代码
while ($row = mysql_fetch_assoc($result)){
到
这将检查查询结果参数是1还是0,如果查询将正确执行,则此部分将工作,否则将不工作。
总之,您不会得到任何错误。添加一些调试代码
echo $query; //to make sure its correct.
if (!$connect)
{
die('could not connect: ' . mysql_error());
}
$query = "SELECT $keyName, $fieldName FROM $tableName";
$result = mysql_query($query,$connect) or die(mysql_error());
print_r(mysql_fetch_assoc($result));
您的查询失败了;您在那里没有任何错误检查,因此您假设它总是有效的-您应该添加对mysql\u error()的调用
如果没有。你也应该考虑移动到PDO或mysqli,因为mysql\u
函数正在被弃用。对我来说这似乎是一个合法的问题,不理解否决票…不起作用。我相信问题是我在fielToList中调用了错误的东西,但我不确定我应该调用什么。这只是练习,不是为了一个商业网站。别担心,我知道我不应该使用mysql_*函数!你有没有在你所有的查询中打勾?查看更新的答案,尝试复制粘贴它。
if($result)
{
while ($row = mysql_fetch_assoc($result)){
echo $query; //to make sure its correct.
if (!$connect)
{
die('could not connect: ' . mysql_error());
}
$query = "SELECT $keyName, $fieldName FROM $tableName";
$result = mysql_query($query,$connect) or die(mysql_error());
print_r(mysql_fetch_assoc($result));