简体   繁体   English

有没有比 VALUES($var1, $var2, $var3) 更好的方法来向 MySQL 查询插入值?

[英]Is there a better way to insert values to MySQL query than just VALUES($var1, $var2, $var3)?

I just have the array of 15 values that all need to be inserted into the table.我只有 15 个值的数组,所有这些值都需要插入到表中。 And I was just wondering if there is anything like this:我只是想知道是否有这样的事情:

INSERT INTO table VALUES($myarrayofvalues)

Just curious, would be very useful.只是好奇,会很有用。

Update:更新:
Just one row with 15 columns.只有一行 15 列。

$query = "INSERT INTO table VALUES('" . implode("', '", $myarrayofvalues) . "')";

Edit :编辑

If you haven't done your escaping yet, you can do that in a tiny loop before the above statement, something like:如果您还没有完成 escaping,您可以在上述语句之前的一个小循环中执行此操作,例如:

foreach($myarrayofvalues as $k=>$v)
    $myarrayofvalues[$k] = mysql_real_escape_string($v);

While you can do what's show in the answer by Rick , it is open to SQL injection.虽然您可以执行Rick的答案中显示的内容,但它对 SQL 注入开放。

There is really no good way to do this without some kind of column mapping.如果没有某种列映射,确实没有什么好的方法可以做到这一点。 That is something to state element 1 is a string, element 2 is an integer.那就是 state 元素 1 是一个字符串,元素 2 是一个 integer。

As such, I see two choices:因此,我看到两个选择:

  1. Escape everything逃离一切

    $values = array(); foreach ($myarrayofvalues as $value) { $column[].= "'". mysql_real_escape_string($value). "'"; } $sql = "INSERT INTO table VALUES(". implode(',', $values). ")";
  2. Write the complete SQL statement写出完整的 SQL 语句

    $sql = "INSERT INTO table (column1_string, column2_int, ...) VALUES ('". mysql_real_escape_string($myarray[0]). "', ". (int)$myarray[1]. ", ...)

I prefer #2 because it is more readable and less brittle.我更喜欢#2,因为它更具可读性且不那么脆弱。 Currently if your schema or array changes, your code breaks.目前,如果您的架构或数组发生更改,您的代码就会中断。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 检查是否在字符串中找到 $var1 或 $var2 值,并且 $var3、$var4 和 $var5 是否在同一个字符串中 - Check if $var1 OR $var2 values are found in string AND if $var3, $var4 and $var5 is in the same string 最快的PHP相当于javascript`var a = var1 || var2 || var3;`expression - Quickest PHP equivalent of javascript `var a = var1||var2||var3;` expression SELECT * FROM tbl在哪里col1 = $ var1和col2 = $ var2和col3 = $ var3 - SELECT * FROM tbl WHERE col1=$var1 and col2=$var2 and col3=$var3 PHP isset等于$ var1或$ var2 - PHP isset equal $var1 or $var2 是否可以在Codeigniter中返回$ var1和$ var2? - Is it possible to return $var1 & $var2 in Codeigniter? PHP比较效率($ var ==($ var1 || $ var2)) - PHP Comparing Efficiency ($var == ($var1 || $var2)) 样式为var1 = trolo&var2 = lolo而不是/ var1 / var2的url参数的路由 - route for url-parameters in the style ?var1=trolo&var2=lolo instead of /var1/var2 PHP语法$ var1 [] = $ var2是什么意思? - What does PHP syntax $var1[] = $var2 mean? 如果 $var1 等于一个字符串,则设置 $var2 等于另一个字符串 - If a $var1 equals a string then set $var2 equal to another string 语句 [$var1, $var2] = someMethod(); 的 PHP 语法是什么? - What's the PHP syntax for statement [$var1, $var2] = someMethod();?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM