有這樣的代碼:我如何的printf增加成功的查詢返回的PHP
$query = mysql_query("CALL dodaj_osobe ('$pesel','$imie','$nazwisko','$telefon','$adres','$nr_konta','$zarobek')");
print "DONE";
但它工作時查詢不成功也是如此。
如何將此更改爲「如果此查詢成功完成,則printf
此文本,其他方式printf
什麼都沒有」?
有這樣的代碼:我如何的printf增加成功的查詢返回的PHP
$query = mysql_query("CALL dodaj_osobe ('$pesel','$imie','$nazwisko','$telefon','$adres','$nr_konta','$zarobek')");
print "DONE";
但它工作時查詢不成功也是如此。
如何將此更改爲「如果此查詢成功完成,則printf
此文本,其他方式printf
什麼都沒有」?
$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
}
?>
嗯,首先,停止使用舊的過時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因爲它支持程序的方法。
根據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
我覺得這是嘗試一些東西的好機會:轉到[文件](http://php.net/manual/en/book.mysql.php),並找出了'mysql_query'函數返回。此外,你會注意到,mysql_ *已被棄用 - 你應該切換到mysqli_或PDO。 – 2013-01-07 15:57:08
@尼卡羅斯 - 也許那個人需要學習編程。我知道這是一個愚蠢的想法,但我是一個heritic。 –
當存儲過程失敗時會發生什麼?它是否只是返回空數據集?基本上,查詢實際上是否失敗,或者它是否會返回可以識別爲錯誤的數據(這對您是錯誤的,但對MySQL成功運行的查詢)。 –