2016-05-09 8 views
-2

私は最近、mysql_queryの代わりにPDO接続を利用して成功しましたが、PDOがはるかに複雑で混乱することがわかりましたので、代わりにmysqli/mysqlconnetを使用します。Azure WebアプリケーションとPDOの代わりにmysqli_connectを使用する

私は晴れたアプリのPHPバージョンをアップすることで潜在的なエラーが発生することに気付きましたが、あなたのアプリケーションをlocalhostのバリエーションに近づけるにはどうしたらいいでしょうか? ?ここで

は、コードmysql_querry詐欺である。ここ

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 


$conn = mysqli_connect($servername, $username, $password); 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
echo "Connected successfully"; 
?> 

if ($result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) { 

    if (!mysqli_query($link, "SET @a:='this will not work'")) { 
     printf("Error: %s\n", mysqli_error($link)); 
    } 
    mysqli_free_result($result); 
} 

mysqli_close($link); 
?> 

PDO変動

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
    } 
catch(PDOException $e) 
    { 
    echo "Connection failed: " . $e->getMessage(); 
    } 
?> 

<?php 
function getFruit($conn) { 
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name'; 
    foreach ($conn->query($sql) as $row) { 
     print $row['name'] . "\t"; 
     print $row['color'] . "\t"; 
     print $row['calories'] . "\n"; 
    } 
} 
?> 

は、アプリの設定 web app settings

はutlizeing接続文字列の間に切り抜いたが

ここにあるものもあります

mysql connection はwebmatrix内のphp暗黙を利用すると比較する

私は基本的に何をしようとしているのですか?しかし、私は紺碧がなぜ私にエラーや何かを与えないのか知らない。私は最終的に私はPDOのバージョンは、より混乱してどのように理解できないだろう

コンソール/クーズーに入るとPHPのINIファイルを変更することができるように私の人生のために
$query = "SELECT * FROM randomTable WHERE innhold LIKE '%$searchFunction%';"; 

$result = mysqli_query($conn, $query) or die("Ikke mulig og søke i db"); 
$antallrader = mysqli_num_rows($sqlResultat); 
+0

あなたの質問を明確にしてください。 PHP 7.0で 'mysqli'を使ってAzureでmysql接続をテストしたところ、私の側でうまく動作します。エラーメッセージがありますか? –

+0

はい、私がしたいことは、これはPDOのinstqであるmysqlli_querryを使用していますが、何のエラーも何も得られていないことです。なぜAzureがそれをサポートしていないのか分かりません。私は最終的に、それがPHP.iniファイルで実用的ではないことをいくつか考え出しました。私はそれを修正する方法を混乱させています。質問を編集します。 – MikeBroski

+0

私の答えのコードを使用していたら、メッセージのファーストクラス –

答えて

1

生産環境として、Azure Web Apps ServiceはPHPランタイムで表示エラーを有効にしません。 devの場合、PHPのini設定ファイルで設定をdisplay_errorsにすることができます。詳細はHow to: Change the built-in PHP configurations を参照してください。

一方、あなたは、単にエラーを表示するために有効にするために、あなたのPHPスクリプトに次のコードを追加することができます。

error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

そしてところで、AzureのWebアプリケーション上のPHPランタイムもPHP 7.0でmysqli拡張をサポートしてきました。 phpinfo()を使用して、すべてのPHPランタイムをチェックすることができます。 enter image description here

さらに心配なことは、私に知らせてください。

+0

はい、これは私が私のphp.iniを紺碧に変更しようとしているのかと疑問に思っていた答えのちょうどタイプです。このようなコマンドラインがhttp://imgur.com/TOOqIaBにmysqlliとmysql?ここでは、窓の紺碧のWebアプリケーションphphttpです://imgur.com/8b4LWZA – MikeBroski

0
<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "test"; 
$charset = "utf8"; 

// mysqli version 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
$conn->set_charset($charset) 

$result = $conn->query("SELECT * FROM City"); 
$data = []; 
while($row = $result->fetch_assoc()) 
{ 
    $data[] = $row; 
} 
foreach ($data as $row) 
    print $row['name'] . "\t"; 
    print $row['color'] . "\t"; 
    print $row['calories'] . "\n"; 
} 

// PDO version 
$dsn = "mysql:host=$servername;dbname=$dbname;charset=$charset"; 
$conn = new PDO($dsn, $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$data = $conn->query("SELECT * FROM City"); 
foreach ($data as $row) 
    print $row['name'] . "\t"; 
    print $row['color'] . "\t"; 
    print $row['calories'] . "\n"; 
} 

を考え出しました。

+0

私が使用した例は完全で無作為でした。この部分については、$ conn-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION)を取ります。エラーやナンセンスでは意味をなさない。しかし、あなたはそれを空のMySQLのPHPのlibaryメソッドで適用する方法について知っていますか? – MikeBroski

+0

あなたが間違った言葉遣いをしているのを恐れています。特定のエラーメッセージがあなたにとって意味をなさない場合、それが意味をなさないことを意味するわけではありません。いずれにしても、エラーメッセージから意味をなすことができない場合は、いつでもGoogleを使用できます。ほとんどの場合、解説と解決策の両方が見つかります。 –

関連する問題