【问题标题】:a small issue with mysql [closed]mysql的一个小问题[关闭]
【发布时间】:2013-08-12 19:38:51
【问题描述】:

我最近开始学习php & mysql, 我想知道这是怎么回事

function show(){
$query=mysql_query(" SELECT * FROM family ");
if (!$query) {
    die("invalid query ".mysql_error());
}
while ($row=mysql_fetch_array($query)) {
echo    "<tr>
 line 24 ===><td><?php echo $row['id']; ?></td>
            <td><?php echo $row['name']; ?></td>
            <td><?php echo $row['lname']; ?></td>
        </tr>";
    }
}

如您所见,我有一个显示数据字段的功能, 我在另一个页面中有一个表,我想通过包含&调用函数来实现,我的变量出现在表中,但我不断收到这个愚蠢的错误: 请帮忙

解析错误:语法错误,意外的 '' (T_ENCAPSED_AND_WHITESPACE),在第 24 行的 C:\xampp\htdocs\php\lib.php 中需要标识符 (T_STRING) 或变量 (T_VARIABLE) 或数字 (T_NUM_STRING)

对于那些想要建议以下代码的人:

echo    "<tr>
            <td>". $row['id'] ."</td>
            <td>". $row['name'] ."</td>
            <td>". $row['lname'] ."</td>
        </tr>"; 

我确实尝试过,它可以工作,但它不会在表格行中显示我的日期 我这样做的目的是我希望它在表格行中显示我的每个数据变量,你知道还有什么好方法吗?

【问题讨论】:

  • 您是否注意到 mysql_ 函数的 PHP 文档中的大红框表示您不应该再使用它们了?
  • 第 24 行在哪里?
  • 你能解释更多吗?!
  • @user2668542 - 它现在输出的究竟是什么?您可以在 while 循环中添加 var_dump($row); 以准确查看您从数据库返回的内容吗?
  • @andrewsi- s21.postimg.org/l28y2hitj/image.png 这是我只写 echo $row['id']; 时的输出

标签: mysql syntax php


【解决方案1】:

&lt;td&gt;&lt;?php echo $row['id']; ?&gt;&lt;/td&gt; 更改为&lt;td&gt;".$row['id']."&lt;/td&gt;

您试图将 php 代码放入字符串中,但这是行不通的。只需使用“点”运算符连接字符串。请查看here 了解更多信息。

按要求编辑:

echo "<table>";
while ($row=mysql_fetch_array($query)) {
  echo "<tr>
    <td>".$row['id']."</td>
    <td>".$row['name']."</td>
    <td>".$row['lname']."</td>
  </tr>";
}
echo "</table>";

【讨论】:

  • 我试过了,但我希望它不会构建表格行
  • 你必须在你的字符串中插入 php 标签 (&lt;?php) 的每一行都这样做:)
  • 我这样做的目的是我希望它在表格行中显示我的每个数据变量,你知道还有其他好的方法吗?
  • 查看编辑。下面将为您提供一个表,其中每一行都包含数据库中表中的一条记录。如果这不是您的预期输出,那么您的问题必须更加清晰。
  • s21.postimg.org/l28y2hitj/image.png 这发生在没有表 :(
【解决方案2】:

您只需关闭并重新打开您的 PHP 标签,而不是回显:

function show(){
$query=mysql_query(" SELECT * FROM family ");
if (!$query) {
    die("invalid query ".mysql_error());
}
while ($row=mysql_fetch_array($query)) {
?>
        <tr>
            <td><?php echo $row['id']; ?></td>
            <td><?php echo $row['name']; ?></td>
            <td><?php echo $row['lname']; ?></td>
        </tr>
<?php
    }
}

交替,不开闭:

function show(){
$query=mysql_query(" SELECT * FROM family ");
if (!$query) {
    die("invalid query ".mysql_error());
}
while ($row=mysql_fetch_array($query)) {
echo    "<tr>
            <td>". $row['id'] ."</td>
            <td>". $row['name'] ."</td>
            <td>". $row['lname'] ."</td>
        </tr>";
    }
}

【讨论】:

  • 它显示的是一行中的数据库字段而不是表中的一行
【解决方案3】:

试试这个

function show()
{
    $query = mysql_query("SELECT * FROM `family`");
    //check if query failed
    if (!$query) {
        die("invalid query ".mysql_error());
    }

    //if there are more than 0 rows in table, we create the table
    if (mysql_num_rows($query) > 0)
    {
        echo "<table>";

        //loop thru array and create table rows
        while ($row = mysql_fetch_array($query)) 
        {
           echo    "<tr>
                       <td>". $row['id'] ."</td>
                       <td>". $row['name'] ."</td>
                       <td>". $row['lname'] ."</td>
                    </tr>";
        }

        echo "</table>";
   }
   else //no rows, we display an error
   {
       echo 'Table is empty';
   }
}

也使用 mysqli_* 因为 mysql_* 被贬值了

【讨论】:

  • 它不会建立表格行:(
  • 更新了答案。你是什​​么意思它不会建立行?有什么错误吗?
猜你喜欢
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
相关资源
最近更新 更多