【问题标题】:i want to check array's data with mysql_real_escape_string() function我想用 mysql_real_escape_string() 函数检查数组的数据
【发布时间】:2011-10-01 23:42:37
【问题描述】:

这个函数是用数组创建sql查询

function YorumEkle($kitapid,$array)
    {

        $sql = "INSERT INTO yorumlar ('" . implode(",",array_keys($array)) . "') VALUES ( '" . implode("','",$array) . "' )";

    }

但我想使用 mysql_real_escape_string() 但如何使用?

【问题讨论】:

  • 你有一个错误。您插入的是一个值,而不是多个值。
  • 打印出$sql,你会看到。 (错误实际上是在列列表中,而不是值)

标签: php mysql arrays


【解决方案1】:

你可以使用array_map函数

function YorumEkle($kitapid,$array)
{
    $array2 = array_map("mysql_real_escape_string",$array);
    $sql = "INSERT INTO yorumlar ('" . implode("','",array_keys($array2)) . "') VALUES ( '" . implode("','",$array2) . "' )";

}

【讨论】:

  • 就像 in up.. 但是 INSERT INTO yorumlar ('deneme,aaaabc 's') VALUES ('bilmemne','\'deneme\'' ) 你能看到新问题吗?跨度>
  • 结果:INSERT INTO yorumlar ('deneme,aaaabc 's') VALUES ('bilmemne','\'deneme\'')
  • 好的知道了.. 也需要转义键.. 谢谢你的评论:)
【解决方案2】:

implode("','",$array) 更改为implode("','", array_map('mysql_real_escape_string', $array))array_map 函数允许您对数组的每个值应用回调,在本例中为 mysql_real_escape_string

示例:

function YorumEkle($kitapid,$array)
    {

        $sql = "INSERT INTO yorumlar (" . implode(",", array_map('mysql_real_escape_string',array_keys($array))) . ") VALUES ( '" . implode("','", array_map('mysql_real_escape_string', $array)) . "' )";

    }

【讨论】:

  • 警告:array_map() [function.array-map]:参数 #2 应该是第 9 行 C:\AppServ\www\ebook\classes\yorum.class.php 中的一个数组跨度>
  • array_map,应该应用于数组,而不是由implode()返回的连接字符串。在此用例中,array_keysarray_values 都应使用 mysql_real_escape_string 进行转义。
  • @MalcolmX 应该是implode("','", array_map('mysql_real_escape_string', $array));。记住数组键需要转义。
  • 但我有新问题 :) INSERT INTO yorumlar ('deneme,aaaabc 's') VALUES ('bilmemne','\'deneme\'')
  • @MalcolmX:看看我的答案以获得完整的解决方案。
【解决方案3】:

试试:

$sql = "INSERT INTO yorumlar (" . implode(",",array_map('mysql_real_escape_string', array_keys($array))) . ") VALUES ( '" . implode("','",array_map('mysql_real_escape_string', $array)) . "' )";

【讨论】:

  • @MalcolmX:不客气!我的回答似乎解决了你的问题,是什么让你决定接受另一个答案? :)
猜你喜欢
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多