在建立一个应用程序和我有一个奇怪的问题,有时一个SQL语句将工作,并在下一次调用完全相同的SQL语句根本不会工作。SQL插入语句有时工作其他时间不工作
我个人怀疑它的托管服务提供商,即时通讯使用,也许只是没有足够快,接受大量的SQL调用数据库的,但我想我会ATLEAST问问看是否有人有过类似的问题
在建立一个应用程序和我有一个奇怪的问题,有时一个SQL语句将工作,并在下一次调用完全相同的SQL语句根本不会工作。SQL插入语句有时工作其他时间不工作
我个人怀疑它的托管服务提供商,即时通讯使用,也许只是没有足够快,接受大量的SQL调用数据库的,但我想我会ATLEAST问问看是否有人有过类似的问题
它可能是您动态添加到查询语句的值。您应该避开这些值,以确保它们不会破坏您的查询。
在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'附近使用正确的语法。告诉'EM为什么你疯了!','23883319','cabbie richards','therea'在线1 –
现货!谢谢您的帮助! –
假设你没有访问MySQL一般查询日志如果你是一个共享的主机上,并不能修改数据库的my.cnf文件,你可能会起草了沿线的一个功能:
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
的值,它将不会登录到该文件,并且将完全跳过谁的fopen进程。你可能需要调整它,甚至可以让它运行每一个查询,而不是只要你想要插入。
你真的需要给我们更多关于这方面的信息。例如,你正在运行的查询,你的表结构,你的定义“不起作用”(即抛出错误,失败等)。 –
你得到的错误是什么? – Sudantha
这是我运行的查询,非常标准,并且在大多数时候运行正常时运行mysql_query(“INSERT INTO tweets VALUES('','$ id','$ twtid','','$ twtsrc','$ inreplyto_id ”, '$ inreplyto_screenname', '$ twtext', '$ pbuid', '$ pbrname', '$ pbsname', '$ pbprfpic')“); –