0

コードは次のとおりです。

<?php
    $sql = mysql_query($db, "CALL selectproducts()");
    if( $sql === FALSE ) {
        die('Query failed returning error: '. mysql_error());
    } else {
        while($row=mysql_fetch_array($sql))
        {
            $id=$row['prodname'];
            $name=$row['proddescription'];
            $desc=$row['prodsupplier'];
            $supp=$row['proddate'];
            $date=$row['prodprice'];
            $qtyleft=$row['prodquantity'];

このエラーの取得:

Warning: mysql_query() expects parameter 2 to be resource, string given in C:\xampp\htdocs\inventory\tableedit.php on line 166

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\inventory\tableedit.php on line 170

実際には呼び出しプロシージャにパラメータがないのにエラーが発生するのはなぜですか?

4

3 に答える 3

0

次のようにする必要があります。

mysql_query("CALL selectproducts()", $db);

ドキュメンテーション

mysql_関数は現在減価償却されていることに注意してください。

于 2013-03-25T01:00:49.250 に答える
0

この方法を試してください:

<?php
$link = mysqli_init(); 
mysqli_options($link, MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=0"); 
mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5); 

mysqli_real_connect($link, $hostname, $username, $password, $dbName); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$query = "CALL simpleproc()"; 
if (mysqli_real_query($link,$query)) { 
    if ($result2 = mysqli_store_result($link)) { 
        while ($row = mysqli_fetch_assoc($result2)) { 
            $q = $row["login"]; 

            echo $q; 
        } 
    } 
} 

mysqli_close($link); 
?>
于 2013-03-25T01:06:21.640 に答える
0

$ dbmysql_queryは 2 番目のパラメータで、最初のパラメータは実行される MySQL クエリです。

さらに、将来の証明のために代わりに mysqli を使用する方がおそらく良いでしょう:

<?php

    $mysqli = new mysqli('username', 'username', 'password', 'database' );
    $result = $mysqli->query("CALL selectproducts()");

    if( !$result ) {

        die('Query failed returning error: '. $mysqli->connect_errno );

    } else {

        while( $row = $result->fetch_array(MYSQLI_ASSOC)) {
            $id       =  $row['prodname'];
            $name     =  $row['proddescription'];
            $desc     =  $row['prodsupplier'];
            $supp     =  $row['proddate'];
            $date     =  $row['prodprice'];
            $qtyleft  =  $row['prodquantity'];
        }
    }
?>

mysqli PHPストアド プロシージャを呼び出すためのドキュメントの確認から:

<?php 

    /**   
     *  Prepare Stored Procedure 
    **/
    if (!($result = $mysqli->prepare("CALL selectproducts()"))) {
        echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
    }

    if (!$result->execute()) {
        echo "Execute failed: (" . $result->errno . ") " . $result->error;
    }

    /**   
     *  Iterate through each result
    **/
    do {
        if ($res = $result->get_result()) {
            printf("---\n");
            var_dump(mysqli_fetch_all($res));
            mysqli_free_result($res);
        } else {
            if ($result->errno) {
                echo "Store failed: (" . $result->errno . ") " . $result->error;
            }
        }
    } while ($result->more_results() && $result->next_result());

?>
于 2013-03-25T01:09:10.867 に答える