有没有更简单的方法从php调用布尔值?

有没有更简单的方法从php调用布尔值?,php,html,Php,Html,我试图从我的服务器调用tinyInt,同时将其转换为布尔值 有没有比我现在使用的更简单的方法 while ($row = mysql_fetch_array($result)) { echo "<td>", "<input type=\"checkbox\" id='switch-state' name=\"$row[name]\" state=\"<script boolean(<? echo '$row[state]'; ?>)

我试图从我的服务器调用tinyInt,同时将其转换为布尔值

有没有比我现在使用的更简单的方法

while ($row = mysql_fetch_array($result)) {
    echo "<td>",
         "<input type=\"checkbox\" id='switch-state' name=\"$row[name]\" state=\"<script boolean(<? echo '$row[state]'; ?>) </script>\" </td>";
}
while($row=mysql\u fetch\u array($result)){
回音“,

“速记php在这里会很好

//Add this bit and reformat your statement
echo ($row['state'] == 1) ? "true" : "false";

$format = "<td>%s</td><td>%s</td><td>%f</td><td>%f</td><td><input type=\"checkbox\" id='switch-state' name=\"%s\" state=\"%s\" </td>";

$data = sprintf($format, $row['city'], $row['name'], $row['lat'], $row['long'], $row['name'], ($row['state'] == 1) ? "true":"false" );

echo $data;
//添加此位并重新格式化您的语句
echo($row['state']==1)?“true”:“false”;

$format=“%s%s%f%f这完全是错误的

  • 不能在HTML属性中放置
    标记。这实际上很可怕
  • 不能有多个具有相同ID的HTML元素。在循环中,使用计数器生成唯一ID
  • 您应该将输出到HTML的所有字符串数据传递给HTML,以避免破坏结果HTML,并将XSS漏洞的风险降至最低
  • 您可能希望使用非标准属性以外的其他属性(例如
    state=“…”
    )来传输元素中的额外数据。 HTML5的
    data-*
    属性非常适合(
    data state=“…”
    )。例如,另一个选项是CSS类。这取决于您打算如何处理状态信息
  • JavaScript可以很好地处理数字。在布尔上下文中使用时,
    0
    计算为
    false
    ,所有其他数字计算为
    true
    。您可能希望按原样传输服务器数据,而不是转换数据
这是我要做的

$index = 0;
while ($row = mysql_fetch_array($result)) {
    $index++;
    echo "<td>",
        "<input type='checkbox' ", 
            "id='switch-state-$index' ",
            "name='".htmlspecialchars($row['name'])."' ",
            "data-state='".$row['state']}."'",
        "></td>\n";
}
$index=0;
while($row=mysql\u fetch\u数组($result)){
$index++;
回音“,
“\n”;
}
哪些产出:

<td><input type='checkbox' id='switch-state-1' name='foo' data-state='1'></td>
<td><input type='checkbox' id='switch-state-2' name='bar' data-state='0'></td>


预期的输出是什么?对于数据状态,我收到一个错误,说括号不应该在那里。这是因为它也在重复这些吗?@Brandon我修改了我的答案,我自己在字符串插值语法中犯了一个错误。我的错。你能给我解释一下吗
($row['state']==1)?“true”:“false”);
它基本上是一个if语句,并生成结果,因此括号中的位是测试,如果为真,则在问号之后,如果为假,则在冒号之后