列名加一个for循环

时间:2012-03-11 04:04:06

标签: php jquery mysql

我在mysql中有name1,name2,name3如何做一个'for循环'来检索我需要为我的表单验证做的mysql中每个人的名字。

    <?php
$row2 = "SELECT * FROM user WHERE username = '" . mysql_real_escape_string($_SESSION['username']) . "'";
$result = mysql_query($row2) or die("Error in SQL: " . mysql_error());
$row3 = mysql_fetch_array($result);
?>

在表单中,我使用以下内容,但它没有检索名称:

        for($i=1; $i<=5; $i++) 
// form code
    <?php echo $row3['name'+[$i]]?>');

2 个答案:

答案 0 :(得分:1)

mysql_fetch_array()默认返回数字和关联键,因此增量for循环不会提供您想要的。相反,请使用MYSQL_ASSOC选项或mysql_fetch_assoc()

$row3 = mysql_fetch_assoc($result);
// OR
$row3 = mysql_fetch_array($result, MYSQL_ASSOC);

for循环必须在PHP中完成。很难判断你的循环是客户端还是服务器端。

<?php
for ($i=1; $i<=5; $i++) {
  // not 'name' + $i -- PHP uses '.' for concatenation
  // but it is easier to interpolate it in double quotes.
  echo $row3["name$i"];
}
?>

更新

由于您试图将PHP混合到一个JS循环(这将无法工作),我建议使用PHP创建一个JavaScript数组,然后可以在以后的JS循环中使用它。

<?php
  // Open a JS array called namesArray
  echo "var namesArray = [";
  $names = array();
  for ($i=0; $i<=5; $i++) {
    // get all the column values into an array
    $names[] = '"' . $row3["name$i"] . '"';
  }
  // Make it into a string
  $names = implode(',', $names);
  // Close the JS array
  echo $names . "];"
?>

那应该输出如下内容:

var namesArray = ["val1","val2","val3","val4","val5"];

在JavaScript循环中(您不必更改),访问以下值:

 // Updated to use i-1 instead of i
 alert('Please make your colour & shade selection for ' + namesArray[i-1]);

答案 1 :(得分:0)

for循环需要在php标记内。