当前位置: 首页 > 面试题库 >

PHP:将带有多个数组值的分隔逗号字符串值插入MySql

景俊语
2023-03-14
问题内容

这是我的目标1.我仅从服务器发送一个ID,其中用逗号分隔的字符串列表如下:ID = 1,名称= blue,red,green,yellow
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黑色

插入后

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


问题答案:

当该SQL无效时,您永远不要关闭values。爆炸也不会建立关联的数组。

如何构建有效的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_r或使用时var_dump。当对mysqli中的查询有疑问时,请使用错误报告,http://php.net/manual/zh/mysqli.error.php。

同样,在当前用法中,您不接受SQL注入,但如果$myString来自用户输入或您的数据库,则可以。您应该研究使用参数化查询。http://php.net/manual/en/mysqli.quickstart.prepared-
statements.php



 类似资料:
  • 我正在使用下面的PHP片段将数据回显到HTML页面。到目前为止,此操作正常,返回的结果如下例所示:value1、value2、value3、value4、value5, 我的PHP: 蒂姆,非常感谢你在这方面的帮助。

  • 问题内容: 我有一个字符串,其中包含格式货币值(如)和多个值(以逗号分隔)。 我想提取并处理所有货币值,但无法为此找到正确的正则表达式,这是我尝试过的 输出为: 有人可以帮我这个吗? 问题答案: 您需要一个正则表达式“向后看” ,它匹配但确实消耗: 这是您现在可以使用的测试用例: 输出:

  • 问题内容: 我有一个字符串,我正在尝试将其解析为一个数字。我尝试使用,结果为2。我猜逗号是问题所在,但我将如何以正确的方式解决此问题?只需删除逗号? 问题答案: 是的,删除逗号:

  • 问题内容: 我需要在逗号处将字符串输入拆分为一个数组。 我该如何做到这一点? 输入: 问题答案: 尝试: 输出:

  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的

  • 问题内容: 我知道如果要将s 数组转换为a ,我可以这样做: 但我不知道如何将s 数组转换为逗号分隔 问题答案: 好吧,你可以这样做: