1

私はphpとmysqliを学んでいます。

mysql クエリの結果を出力したいと考えています。
これまでのところ、私はこれを行ってきました:

$link = mysqli_connect("host","user", "pass","db_name");
//error handling here
//printing host info here
$company_name = "ODEON";
$query = "select company from production where company = ?";
$stmt = mysqli_stmt_init($link);
if (!($stmt = mysqli_stmt_prepare($stmt, $query))){
     echo "Prepare failed: (" . $stmt->errno . ") " . mysqli_error($link);
}
var_dump($stmt); //for debugging
echo "before bind<br>";
if(!(mysqli_stmt_bind_param($stmt, "s", $company_name))){
    echo "Binding parameters failed: (" . $stmt->errno . ") " . mysqli_error($stmt);
}
echo "after bind<br>";
var_dump($stmt); //for debugging

if(!(mysqli_execute($stmt))){
    echo "Execute failed: (" . $stmt->errno . ") " . mysqli_error($stmt);  
}

printf("<hr>Results:<br>");
while($obj = mysqli_fetch_object($result)){
    printf("%s<br>", $obj->company_name);
}
mysqli_free_result($obj);
printf("<hr><br>");

mysqli_stmt_close($stmt);
mysqli_close($link);

そして、私が得ているのはこれだけです:

Host information: host via TCP/IP
Prepare failed: (0) NULL 
Binding parameters failed: () NULL 
Execute failed: () 

なにが問題ですか?

4

2 に答える 2

1

それは最終的に解決されました。問題は、localhost を使用していたときにエラーが投稿されなかったことです。したがって、にある私のphp.iniファイルで

/usr/local/zend/etc/php.ini

(zend フレームワークをインストールしたため) 表示エラーを on に変更しました。

コードの問題はおそらくここにありました:

$stmt = mysqli_stmt_prepare($stmt, $query)

最初の引数を使用しますが、これは必要ありません。

于 2013-01-01T23:48:40.927 に答える
1

問題はあなたの使用にあると思いますmysqli_stmt_prepare

あなたは渡してい$linkますが、ステートメントを渡す必要があります。$stmt = mysqli_stmt_init($link);代わりにコールしてパスする必要があります$stmt

PHP ドキュメントから抜粋します。

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

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

$city = "Amersfoort";

/* create a prepared statement */
$stmt = mysqli_stmt_init($link);
if (mysqli_stmt_prepare($stmt, 'SELECT District FROM City WHERE Name=?')) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>
于 2012-12-31T03:51:19.500 に答える