2013-01-07 44 views
0

有這樣的代碼:我如何的printf增加成功的查詢返回的PHP

$query = mysql_query("CALL dodaj_osobe ('$pesel','$imie','$nazwisko','$telefon','$adres','$nr_konta','$zarobek')"); 
print "DONE"; 

但它工作時查詢不成功也是如此。

如何將此更改爲「如果此查詢成功完成,則printf此文本,其他方式printf什麼都沒有」?

+1

我覺得這是嘗試一些東西的好機會:轉到[文件](http://php.net/manual/en/book.mysql.php),並找出了'mysql_query'函數返回。此外,你會注意到,mysql_ *已被棄用 - 你應該切換到mysqli_或PDO。 – 2013-01-07 15:57:08

+0

@尼卡羅斯 - 也許那個人需要學習編程。我知道這是一個愚蠢的想法,但我是一個heritic。 –

+0

當存儲過程失敗時會發生什麼?它是否只是返回空數據集?基本上,查詢實際上是否失敗,或者它是否會返回可以識別爲錯誤的數據(這對您是錯誤的,但對MySQL成功運行的查詢)。 –

回答

2
$result = mysql_query('your SQL query'); 
if (!$result) { 
    print('error: ' . mysql_error()); // an error occured 
} 
else 
{ 
    print('Done'); 
} 

嘗試使用mysqli的,因爲是的mysql_query不贊成: mysqli manual

一個簡單的mysqli〔實施例:

<?php 
// New Connection 
$db = new mysqli('localhost','user','pass','database'); 
$result = $db->query("your SQL query"); 
if($result) 
{ 
    // Cycle through results 
    while ($row = $result->fetch_object()) 
    { 
     $group_arr[] = $row; 
    } 
    // Free result set 
    $result->close(); 
    $db->next_result(); 
} 
else 
{ 
    echo($db->error); // an error occured, print the error 
} 
?> 
1

嗯,首先,停止使用舊的過時mysql_*

我不會告訴你怎麼做你想要什麼mysql_*,因爲我不想。在PDO,你會怎麼做:

$db = new PDO('mysql:host=dbHost;dbName=yourDBName;' , 'user' , 'pass'); 

try 
{ 
    $st = $db->prepare("CALL dodaj_osobe (pesel:,imie:,nazwisko:,telefon:,adres:,nr_konta:,zarobek:)"); 
    $st->bindValue('pesel:' , $pesel , PDO::PARAM_dataType); 
    $st->bindValue('imie:' , $imie , PDO::PARAM_dataType); 
    $st->bindValue('nazwisko:' , $nazwisko , PDO::PARAM_dataType); 
    $st->bindValue('telefon:' , $telefon , PDO::PARAM_dataType); 
    $st->bindValue('adres:' , $adres , PDO::PARAM_dataType); 
    $st->bindValue('nr_konta:' , $nr_konta , PDO::PARAM_dataType); 
    $st->bindValue('zarobek:' , $zarobek , PDO::PARAM_dataType); 
    $st->execute(); 
} 
catch(PDOException $qEx) 
{ 
    //the query wasn't successful.. 
    //deal with it 
} 

替換所有PDO::PARAM_dataType與任何數據類型指定的地點架的變種是。例如,如果$pesel是字符串,則用$st->bindValue('pesel:' , $pesel , PDO::PARAM_STR);替換$st->bindValue('pesel:' , $pesel , PDO::PARAM_dataType);。注意PARAM_STR?..

如果OOP做法混淆了你,用的MySQLi因爲它支持程序的方法。

0

根據PHP maual:mysql_query() returns a resource on success,或FALSE上的錯誤。

所以,如果你想要這個功能的精確結果,可以這樣寫;

$result = mysql_query("SELECT * FROM table"); 
if (false !== $result) { 
    // it's ok! 
} else { 
    // error! 
} 

另外,mysql_*函數從PHP 5.5.0開始已棄用。查看更多詳細信息:http://php.net/manual/en/function.mysql-query.php