java - PHP:将分隔的逗号字符串值与多个数组值插入到 MySql 中

标签 java php android mysql mysqli

这是我的目标 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);     
            }

这是我的完整代码 View

 <?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        黑色

插入后

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

最佳答案

虽然该 SQL 无效,但您永远不会关闭。 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 注入(inject),但如果 $myString 来自用户输入,或者您的数据库,则可能是这样。您应该考虑使用参数化查询; http://php.net/manual/en/mysqli.quickstart.prepared-statements.php .

关于java - PHP:将分隔的逗号字符串值与多个数组值插入到 MySql 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780041/

相关文章:

php - 根据小计向 WooCommerce Checkout 添加佣金

php - 图片无法在 PHP 中上传

php - Android Mysql - 结果太多

android - 清除导航上的 Searchview 文本。

java - Spring Boot 应用程序无法实例化类,除非使用 Autowired 注解

java - 为什么在 Java 1.8 中使用 Function<V,R> 而不是 Function<R,V>?

java - 从数据库获取点到 map android

java - 在 Spark Java 中定义要广播的对象的位置

java - 安卓接听来电

android - RecycleView 仅显示第一项