2014-04-03 45 views
0

我在尝试将数据显示到输入字段而不是显示数据库时显示'$row[coursename]',在<td>上的数据库正常工作。将数据显示到输入文本字段中时出错

如何解决这个问题的任何想法,我真的很新的PHP

<?php 
require("coneccion.php"); 

if(empty($_SESSION['user'])) 
{ 
    header("Location: index.php"); 
    die("Redirecting to index.php"); 
} 

$query = "SELECT courseid, coursename, id FROM courses where courseid = 179"; 

try 
{ 
    $stmt = $db->prepare($query); 
    $stmt->execute(); 
} 
catch(PDOException $ex) 
{ 
    die("Error"); 
} 

$rows = $stmt->fetchAll(); 
?> 
<table> 
    <tr> 
    <th>Name</th> 
    </tr> 
    <?php 
    foreach($rows as $row): 
    echo "<tr>"; 

     echo '<td><a href="#">' . htmlentities($row['coursename'], ENT_QUOTES, 'UTF-8') . '</a></td>'; 
     echo '<input type="text" name="coursename" value=" $row[coursename] " />'; 
     echo '</tr>'; 

    endforeach; 
echo "</table>"; 

回答

1

移动变量字符串之外:

echo '<input type="text" name="coursename" value="' .htmlentities($row['coursename']) . '" />'; 

如果不添加括号,则不能在其周围添加双引号(但会引发大量容易出错的转义)

echo "<input type=\"text\" name=\"coursename\" value=\"{htmlentities($row['coursename'])}\" />"; 
+0

谢谢你这个选项的工作原理,但它给出了一个警告注意:使用未定义的常量coursename –

+0

@CarlosPerez看到更新 - 你需要在你的数组索引中的字符串 – SomeKittens

+0

为什么你在前使用'\',sorry im –

0

这应该工作:

echo '<input type="text" name="coursename" value=" '.htmlentities($row['coursename']).' " />'; 
+0

这会打开XSS漏洞。 – SomeKittens

+0

的确,增加htmlentities – Companjo

相关问题