我正在尝试根据个人网络项目上的mysql查询结果动态创建html内容。我以为我找到了解决方案,但后来意识到我正在混合PHP apis而我不应该这样做。对于其他一些页面,我学习了准备好的语句,并重写了很多我的php处理程序。但我不确定如何复制这样的东西......
<?php
$teacherid = 1;
$servername = "localhost";
$username = "xxxx";
$password = "xxxx";
$dbname = "xxxx";
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connection_error){
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT ClassID, className FROM Classes WHERE teacherID = '" . $teacherid . "' ;";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()){
echo ("<a class='button href=\"class.php?id=".$row["ClassID"]."\">".$row["className"."</a>");
}
Appache给出了错误结果:
类mysqli_result的对象无法转换为字符串 的/ var /../../ page.php文件
在这行代码上
$sql = "SELECT ClassID, className FROM Classes WHERE teacherID = '" . $teacherid . "' ;";
vardump($ teacherid)产生以下内容:
object(mysqli_result)#1(5){[“current_field”]} =&gt; NULL [“field_count”] =&gt; NULL [“lengths”] =&gt; NULL [“num_rows”] =&gt; NULL [ “型”] =&GT; NULL}
看来我的会话变量以某种方式丢弃在我的网站中...在跟踪之前,我想看到这种方法来创建内容工作。我将$ teacherid更改为此...
$teacherid = 1;
我还将$ sql改为
$sql = "SELECT ClassID, className FROM Classes WHERE teacherID = " . $teacherid . " ;";
现在,没有创建任何按钮,但我也没有从Appache收到任何错误。但是,直接在sql上使用的完全相同的查询将返回1个有效结果。
此处还找到了会话变量的解决方案:Notice: Unknown: Skipping numeric key 1 in Unknown on line 0
答案 0 :(得分:1)
你有一些语法错误,所以我需要在任何事情之前给你写信,也许这就是你需要的
int main(void) {
char file_name[25];
FILE *fp;
printf("Enter the name of file you wish to see\n");
mygets(file_name, sizeof file_name);
fp = fopen(file_name, "r"); // read mode
if (fp == NULL) {
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
}
您的查询中的while($row = $result->fetch_assoc()){
echo "<a class=\"button\" href=\"class.php?id=".$row["ClassID"]."\">".$row["className"]."</a>";
}
也未在任何地方定义
编辑: 您的echo
中再次出现语法错误$teacherid
您错过了关闭行[&#39; ClassName&#39;];
的括号