私は今、何時間も頭を壁にぶつけており、SOでいくつかの回答を読んだり、ネットを検索したり、解決策を見つけようとしています。ここで同様の質問がされて回答されていることは理解していますが、私のコードは異なるため、以前の回答から私の何が問題なのかを推定することはできません。
PHP/MySQL は初めてです。オンラインで見つけたコードと自分の知識を使用してパッチを適用したポーリング スクリプトがあります。MySQL は私の標準的なものです。人が 2 つのもののいずれかに投票するたびに、データベース内の対応する値が 1 ずつ増加します。各値を取得して独自の変数に割り当て、計算を実行しようとしています。最初のものは問題なく取得できますが、恐ろしく
Trying to get property of non-object in..." error
て
"Fatal error: Call to a member function bind_param() on a non-object in...
2番目のもの。最初の準備とまったく同じなので、何が悪いのかわかりませんか?これはこれを行うための最も効率的な方法ではないかもしれませんが、私が言ったように、私はこれに慣れていません。エラーが何を伝えようとしているのか理解しています。WHERE 句の id を除いて、prepare ステートメントがその前のステートメントと同じである場合にエラーが発生する理由がわかりません。 bool(false)var_dump($query2)
を返すので、そこに何もないことがはっきりとわかります。しかし、データベースには何かがあります。
<?php
// Turn on error reporting
ini_set('display_errors', 'On');
// Connect to database
$mysqli = mysqli_connect('localhost', 'dbuser', 'dbpwd', 'dbname');
// Check connection
if (!$mysqli || $mysqli->connect_errno)
{
echo "Connection error: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
exit();
} else if (isset($action)) // This is set through a page redirect
{
// DISPLAY ITEM - THIS WORKS FINE
if (!($query = $mysqli->prepare("SELECT votes FROM influential WHERE id = 1")))
{
echo "Prepare failed: " . $query->errno . " " . $query->error;
}
if (!$query->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if (!$query->bind_result($infl1))
{
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if ($query->fetch())
{
echo $infl1;
}
// DISPLAY ITEM - THIS DOESN'T WORK
if (!($query2 = $mysqli->prepare("SELECT votes FROM influential WHERE id = 2")))
{
echo "Prepare failed: " . $query2->errno . " " . $query2->error;
} else echo "Prepare succeeded.";
$query2->bind_param("i", $votes);
if (!$query2->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
} else echo "Execute succeeded.";
if (!$query2->bind_result($infl2))
{
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
} else echo "Bind succeeded.";
if ($query2->fetch())
{
echo $infl2;
}
exit();
$mysqli->close();
}
?>