【问题标题】:sql insert statement sometimes working other times not workingsql插入语句有时工作有时不工作
【发布时间】:2011-06-25 16:05:28
【问题描述】:

我正在构建一个应用程序,但我遇到了一个奇怪的问题,有时 sql 语句会起作用,而下一次调用完全相同的 sql 语句根本不起作用。

我个人怀疑我使用的托管服务提供商可能不够快,无法接受对数据库的大量 sql 调用,但我想我至少会询问其他人是否遇到过类似问题

【问题讨论】:

  • 您确实需要向我们提供有关此的更多信息。例如,您正在运行的查询、您的表结构、您对“不起作用”的定义(即它是否引发错误、静默失败等)。
  • 您遇到的错误是什么?
  • 这是我运行的查询,非常标准,并且在大多数情况下运行良好 mysql_query("INSERT INTO tweets VALUES('','$id','$twtid','',' $twtsrc','$inreplyto_id','$inreplyto_screenname','$twtext','$pbuid','$pbrname','$pbsname','$pbprfpic')");
  • 它默默地失败了,但是我没有设置任何错误来捕捉明智的tbh,最好使用什么?插入(等等等)或死()?

标签: php mysql sql database web-hosting


【解决方案1】:

它可能是您动态添加到查询语句中的值。您应该转义这些值以确保它们不会破坏您的查询。

在 PHP 中,您可以使用 mysql_escape_string() 函数。此处的文档:http://us3.php.net/mysql_escape_string

此外,如果您从浏览器运行查询,执行以下操作通常会看到错误:

$query = mysql_query("QUERY", $db_connection) or trigger_error(mysql_error());

【讨论】:

  • 我认为您可能是对的,这是我能够检索到的错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“EM WHY YOU MAD, SON”附近使用的正确语法。告诉他们你为什么生气!','23883319','cabbie richards','therea' 在第 1 行
【解决方案2】:

假设如果您在共享主机上并且无法修改数据库的 my.cnf 文件,则您无权访问 mysql 常规查询日志,您可能会按照以下方式起草一个函数:

function dbInsertQuery($query, $conn) {
     $logFile = "/path/to/file.txt";
     $isProd  = FALSE;

     // run your security checks on the query here

     $mysql_query($query, $db_connection) or trigger_error(mysql_error());

     if (!$isProd && is_writable($logFile)) {
       if (!handle = fopen($logFile, 'a')) {
         echo "cannot open dbInsertQuery's log file: " . $logFile;
         exit;
       } 

       $logLine = date(DATE_RFC822) . " - " . $query;

       if (fwrite($handle, $logLine) === FALSE) {
         echo "cannot write to dbInsertQuery's log file: " . $logFile;
         exit;
       }

       fclose($handle);
     }

   }

这将允许您将所有查询记录到日志文件中。我设置了一个$isProd 变量供您切换以进行开发,如果将其设置为TRUE 的值,它将不会记录到文件中,并且将完全跳过who fopen 过程。您可能需要对其进行调整,甚至可以让它运行每个查询,而不仅仅是根据需要插入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多