如何在PHP中将printf添加到成功的查询返回

时间:2013-01-07 15:53:52

标签: php mysql sql phpmyadmin

我有这段代码:

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

但是当查询也不成功时它也有效。

如何将此更改为“如果此查询成功完成,然后printf此文本,以其他方式printf没有”?

3 个答案:

答案 0 :(得分: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 :(得分: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替换为指定占位符的var的任何数据类型。例如,如果$pesel是字符串,请将$st->bindValue( 'pesel:' , $pesel , PDO::PARAM_dataType );替换为$st->bindValue( 'pesel:' , $pesel , PDO::PARAM_STR );。请注意PARAM_STR?..

如果OOP方法让您感到困惑,请使用MySQLi,因为它支持程序方法。

答案 2 :(得分:0)

根据PHP maual:mysql_query() returns a resource on successFALSE出错。

所以,如果你想要这个函数的确切结果,可以像这样写;

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

此外,自PHP 5.5.0起,不推荐使用mysql_*函数。查看更多详情:http://php.net/manual/en/function.mysql-query.php