[英]sql insert statement sometimes working other times not working
我正在構建一個應用程序,而我遇到了一個奇怪的問題,即有時sql語句將起作用,而下一次調用完全相同的sql語句將根本不起作用。
我個人懷疑它的托管服務提供商Im使用的速度可能不夠快,無法接受對數據庫的大量sql調用,但我想我至少會問一下是否有人遇到過類似問題
可能是您動態添加到查詢語句中的值。 您應該轉義這些值以確保它們不會破壞您的查詢。
在PHP中,您可以使用mysql_escape_string()函數。 此處的文檔: http : //us3.php.net/mysql_escape_string
另外,如果您正在通過瀏覽器運行查詢,則執行以下操作通常可以看到錯誤:
$query = mysql_query("QUERY", $db_connection) or trigger_error(mysql_error());
如果您在共享主機上並且無法修改數據庫的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進程。 您可能需要調整它,甚至可能使它運行每個查詢,而不僅僅是您想插入的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.