【问题标题】:PHP: Insert separated comma string value with as multiple array value Into MySqlPHP:将分隔的逗号字符串值与多个数组值插入MySql
【发布时间】:2016-10-13 07:10:17
【问题描述】:

这是我的目标 1. 我只有一个从服务器发送的 ID 用字符串分隔的逗号列表 这是它的样子:ID=1,名称=蓝色,红色,绿色,黄色 2.这是我的尝试: 2.1 我尝试使用此代码将名称更改为数组

$myString = "Red,Blue,Black";
$myArray = explode(',', $myString); 

2.2 我尝试这样插入:

$sql="INSERT INTO `cat_interest`(`id`,`categories`) VALUES (1,'".$myArray["categories"]."'";
            if (!$result = $mysqli->query($sql)){
                    $message = array('Message' => 'insert fail');
                    echo json_encode($message);         
            }else{             
                    $message = array('Message' => 'new record inserted');
                    echo json_encode($tempArray);     
            }

这是我的完整代码视图

 <?php
define('HOST','serveraddress');
define('USER','root');
define('PASS','pass');
define('DB','dbname');
ini_set('display_errors',1);
//ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

            $mysqli = new mysqli(HOST,USER,PASS,DB);
    $message= array();      
        $myString = "Red,Blue,Black";// incoming string comma names
        $myArray = explode(',', $myString); 

       $sql="INSERT INTO `cat_interest`(`id`,`categories`) VALUES (1,'".$myArray["categories"]."'";
                if (!$result = $mysqli->query($sql)){
                        $message= array('Message' => 'insertion failed');
                        echo json_encode($message);         
                }else{             
                        $message= array('Message' => 'new record inserted');
                        echo json_encode($message);   
                } ?>

这就是我想要在下面实现的

ID     类别
1        红色
1        蓝色
1      黑色

插入后

请帮助我不知道我做错了什么

【问题讨论】:

    标签: java php android mysql mysqli


    【解决方案1】:

    虽然该 SQL 无效,但您永远不会关闭 values。 Explode 也不会构建关联数组。

    如何构建有效的 SQL 语句的粗略示例是

    $myString = "Red,Blue,Black";// incoming string comma names
    $myArray = explode(',', $myString); 
    print_r($myArray);
    $sql = "INSERT INTO `cat_interest`(`id`,`categories`) VALUES";
    foreach($myArray as $value){
        $sql .= " (1, '{$value}'),";
    }
    $sql = rtrim($sql, ',');
    

    演示:https://eval.in/587840

    当对构造中的数组如何使用print_rvar_dump 有疑问时。当 mysqli 中的查询出现问题时,使用错误报告,http://php.net/manual/en/mysqli.error.php

    此外,在您当前的使用情况下,您不会对 SQL 注入开放,但如果 $myString 来自用户输入,或者您可能是您的数据库。您应该考虑使用参数化查询; http://php.net/manual/en/mysqli.quickstart.prepared-statements.php.

    【讨论】:

    猜你喜欢
    • 2021-10-17
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多