2017-05-22 101 views
2

我有一個後端cron腳本,它可以檢查MySQl是否符合if-then條件,然後運行Curl操作。無論如何,劇本已經一年多了運行良好,現在,當突然發生問題,並沒有任何意義,我MySQL PHP在沒有我的輸入的情況下添加3306

這裏是腳本

<?php 
    //assign values to variables 
    $servername = "localhost:3306"; 

    $username = "username"; 

    $password = "password"; 

    $database = "database"; 

    $con = mysqli_connect($servername, $username, $password, $database); 

    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $results = "SELECT NewUserID FROM queue ORDER BY ID"; 

    $queryresults = $con->query($results); 

    if($con->error) { 
     printf("Errormessage: %s\n", $con->error); 
     die(); 
    } 

我會看到這個錯誤截斷碼:

Warning: mysqli_connect(): (HY000/2002): Failed to parse address "localhost:3306:3306" in /home/foo/bar/BackEnd.php on line 11 
Failed to connect to MySQL: Failed to parse address "localhost:3306:3306" 
Fatal error: Uncaught Error: Call to a member function query() on boolean in /home/foo/bar/BackEnd.php:19 
Stack trace: 
#0 {main} 
thrown in /home/foo/bar/BackEnd.php on line 19 

解決辦法很簡單,我把「localhost:3306」爲「localhost」,一切又工作,因爲它似乎是「3306」被添加到什麼是已經存在。這個解決方案看起來像是一個等待發生的問題,但我不知道首先出了什麼問題。有任何想法嗎?

回答

2

您不能在host參數中指定端口。 以下是完整的函數定義:

mysqli_connect($host, $username, $password, $dbname, $port, $socket); 

你應該只添加端口在您的通話結束。像這樣:

$con = mysqli_connect($servername, $username, $password, $database, 3306); 
+0

任何想法爲什麼這麼長時間沒有導致錯誤?我猜計算機很有趣,但現在出現問題似乎很奇怪。還默認是3306,對嗎?如果參數是空白的。 – electricjelly

+0

是'3306'是默認的MySQL端口。你可以忽略它並使用沒有任何端口的'localhost'。我不知道之前爲什麼會用到它,也許你最近更新了PHP版本? –

+0

你是絕對正確的,我的網站主機最終更新到PHP 7,我想這是一個副作用。謝謝您的幫助! – electricjelly

相關問題