【问题标题】:How to save URL's to a MYSQL database from an array如何将 URL 从数组保存到 MYSQL 数据库
【发布时间】:2009-10-07 06:50:11
【问题描述】:

将 URL 或符号保存到 MYSQL 数据库的最佳方法是什么。

我已经看到这个被使用了 "{$htmlOutputArray[1]}" 然后这个“$htmlOutputArray[1]” 和其他一些地方做我在下面所做的......但哪个是最好的?

到目前为止我有:(示例代码)

$html = "034251\nhttp://stackoverflow.com/questions/ask"
$htmlOutputArray = explode("\n", "$html");

$htmlOutput = $htmlOutputArray[0];
$postIDOutput = $htmlOutputArray[1];
$con = mysql_connect('localhost', 'user', 'pass') or die('Could not connect: ' . mysql_error());
#echo 'Connected successfully';
mysql_select_db("dbName", $con);
mysql_query("UPDATE tableName SET PostidINT='$postIDOutput', URLofPostTXT='$htmlOutput' WHERE id='$unID'");
mysql_close($con);

【问题讨论】:

    标签: php mysql url


    【解决方案1】:

    首先您应该了解SQL injection 的危险以及如何预防它。

    这是您可以执行此操作的一种方法和更安全的版本。

    mysql_select_db("dbName", $con);
    
    $sql = sprintf("UPDATE tableName SET PostidINT=%d, URLofPostTXT='%s' WHERE id=%d",
         mysql_real_escape_string($htmlOutputArray[1]), 
         mysql_real_escape_string($htmlOutputArray[0]), 
         mysql_real_escape_string($unID));
    
    mysql_query($sql);
    
    mysql_close($con);
    

    mysql_real_escape_string() 正在做的是防止不安全的字符被输入到您的数据库中。

    sprintf() 所做的是格式化您的字符串,例如,PostidINT 和 id 变量中只会输入数字。

    【讨论】:

      【解决方案2】:

      我会投票给准备好的语句(和 mysqli):

      $connection = new mysqli("localhost", "user", "pass", "db");
      $statement = $connection->prepare("UPDATE tableName SET PostidINT=?, URLofPostTXT=? WHERE id=?");
      $statement->bind_param("i", $postIDOutput);
      $statement->bind_param("s", $htmlOutput);
      $statement->bind_param("i", $unID);
      $statement->execute();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-28
        • 2012-09-29
        • 1970-01-01
        • 2014-01-12
        • 2014-11-22
        • 1970-01-01
        • 2021-08-23
        • 1970-01-01
        相关资源
        最近更新 更多