我正在尝试将带有逗号的值插入数据库,但是逗号正在拆分查询,以便逗号前的字符串部分进入正确的列,而逗号后的部分进入下一个和每个之后,查询中的项目将移至下一列。
我与数据库的连接文件如下:
define('DB_HOST', 'localhost');
define('DB_NAME', '********');
define('DB_USER', '********');
define('DB_PASS', '********');
define('DB_CHAR', 'utf8');
class DB
{
protected static $instance = null;
protected function __construct() {}
protected function __clone() {}
public static function instance(){
if (self::$instance === null){
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => FALSE,
);
$dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset='.DB_CHAR;
self::$instance = new PDO($dsn, DB_USER, DB_PASS, $opt);
}
return self::$instance;
}
public static function __callStatic($method, $args){
return call_user_func_array(array(self::instance(), $method), $args);
}
public static function run($sql, $args = []){
if (!$args){
return self::instance()->query($sql);
}
$stmt = self::instance()->prepare($sql);
$stmt->execute($args);
return $stmt;
}
}
然后我这样查询:
$item1 = 'item1';
$item2 = 'item_with_a_,_symbol';
$item3 = 'item3';
$params = [$item1,$item2,$item3];
$sql = "INSERT INTO table (col1,col2,col3) VALUES(?,?,?)";
$stmt = DB::run($sql,$params);
在这种情况下,我的数据库将如下所示:
col1 col2 col3
item1 item_with_a_ _symbol
解决此问题的最佳方法是什么?任何帮助或建议,将不胜感激。