PHP从具有多维数组的值更新表

时间:2013-11-08 13:13:04

标签: php mysql

我的PHP代码是

for($i=1;$i<$rows;$i++)
{
    $flag=0;
   $result = mysqli_query($con,"SELECT id FROM `TABLE 1` ");
   while($row = mysqli_fetch_array($result))
   {
     //echo $row['id']."<br>";
     echo $cols[$i][0];
     if($row['id']==$cols[$i][0])//id exists in database=> update
     {
        echo"<br> ".$cols[$i][4];
        mysqli_query($con,"UPDATE `TABLE 1` SET `price`=$cols[$i][4]  WHERE `id`=07");
        //echo $cols[$i][0];
        $flag=1;
     }
    }
    if($flag==0)//Add new record in to database
    {
       //code for insert
    } 
}

它不会更新价格

  

mysqli_query($ con,“UPDATE TABLE 1 SET price = $ cols [$ i] [4] WHERE id = 07”);

如果我输入它,它会更新价值,即价格,例如

  

mysqli_query($ con,“UPDATE TABLE 1 SET price = 100 WHERE id = 07”);

$cols[$i][4]是一个数组,当我回显它时它会给出正确的值,但是当为update语句应用相同的值时它不会接受它。

2 个答案:

答案 0 :(得分:0)

尝试以下查询,

mysqli_query($con,"UPDATE `TABLE 1` SET `price`= '".$cols[$i][4]."'  WHERE `id`=07");

答案 1 :(得分:0)

考虑到您插入SQL语句的变量的复杂性 - 多维数组 - 您不能像在简单变量($var[0][1] vs $var中那样将它包含在字符串中。将字符串与.连接,或用大括号{}包围变量。

// using concatenation
$sql = "UPDATE `TABLE 1` SET price=".$cols[$i][4]." WHERE `id`=07";
// using curly braces
$sql = "UPDATE `TABLE 1` SET price={$cols[$i][4]} WHERE `id`=07";
mysqli_query( $con, $sql );

我还建议尽可能避免在表名中使用空格和关键字,这样可以减少SQL中出错的几率。