【问题标题】:PHP: Inserting Array of Integers into MySQL databasePHP:将整数数组插入 MySQL 数据库
【发布时间】:2014-12-02 15:34:00
【问题描述】:

我有一个 MySQL 表,其中有一列我想插入多个整数,逗号分隔。 (如 1,2,3,4)。 我从表单传递这些整数值,并在我的 php 文件中正确接收它们作为数组:

数组([0] => 3 [1] => 4)

但现在我想将它插入到我的数据库中,但我不断收到:

注意:数组到字符串的转换

这就是我接收我的帖子值并将它们放入数组的方式:

$project_type = substr($_POST['project_type'], 0, -1); //the substring to remove the last comma
$project_type_array = explode(',', $project_type);

这就是我插入它的方式:

$SQL_project_has_type = "INSERT INTO project_has_project_type(project_ID_project, project_type_ID_project_type)
VALUES('{$row['ID_project']}', {$project_type_array})";

mysql_query($SQL_project_has_type); 

欢迎任何帮助,谢谢!

【问题讨论】:

  • 为什么要将它设为整数而不是 varchar?数字中不能有逗号。

标签: php mysql sql arrays integer


【解决方案1】:

在存储到数据库之前将数组编码为 json,并在读取值时将对象解码为数组。 在 php 中,您可以通过调用 json_encode() 进行编码,并通过使用 json_decode() 获取原始数组。

【讨论】:

    【解决方案2】:

    要将数组插入数据库,您可以像这样序列化数组

     $project_type_array = serialize( $project_type_array );
    

    并反序列化以从数据库中使用。

    如果您只想将数据插入 (1,2,3),则在数组上应用 foreach 并创建一个字符串 像

    这样的值
    $value = '';
    foreach( $project_type_array as $val ){
    
        $value = $val.',';
    
    }
    
    $value = rtrim( $value, ',' ); // to remove last comma from the string
    

    【讨论】:

    • 这可能有效,但我需要将数据作为整数存储在数据库中(因为另一个表的外键)。那么是否可以将以下数据存储为:3,4,5,6(带逗号)作为整数在表中?
    • 不,您只能将其用作文本,对于整数应该只有一个整数值。如果你想从这个字符串( 1,2,3 )中搜索一个键,那么你可以使用 mysql 的 find_in_set() 函数。 find_in_set(搜索字符串,列);希望这会有所帮助
    【解决方案3】:

    试试这个

    <?php
    
    $array = Array ( 0 => 3 ,1 => 4 );
    $project_type_array = implode(',',$array);
    
    print_r($project_type_array);
    
    $SQL_project_has_type = "INSERT INTO project_has_project_type(project_ID_project, project_type_ID_project_type)
    VALUES('".$row['ID_project']."','".$project_type_array."')";
    
    mysql_query($SQL_project_has_type); 
    ?>
    

    【讨论】:

      【解决方案4】:

      我已经设法解决它,我想我没有很好地解释我的问题。基本上我试图在一行中插入多个外键,所以我现在所做的是使用 for 循环插入具有相同 ID 但不同外键的多行:

      $project_type = substr($_POST['project_type'], 0, -1);
      $project_type_array = explode(',', $project_type);
      
      for($i = 0; $i < count($project_type_array); ++$i){
          $SQL_project_has_type = "INSERT INTO project_has_project_type(project_ID_project,project_type_ID_project_type)
          VALUES('{$row['ID_project']}', {$project_type_array[$i]})";
          mysql_query($SQL_project_has_type);
          }
      

      这就完成了。无论如何感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-26
        • 2013-11-30
        • 2011-12-06
        • 2012-04-20
        • 1970-01-01
        相关资源
        最近更新 更多