使用sqli php动态生成html

时间:2015-12-01 22:36:50

标签: php mysql mysqli

我正在尝试根据个人网络项目上的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

1 个答案:

答案 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;];

的括号