タイトルが示すように、古い MySQL_statements から PDO に切り替えています。問題がありますが、'tableitem'
既に存在するかどうかを確認しようとすると、存在する場合は取得し'tableitem2'
、'tableitem'
存在しない場合は 1 に設定'tableitem2'
します。これが私の古い MySQL コードであり、以下に何を述べますか私が試してみました。
$user_ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT * FROM TABLENAME WHERE user_ip='$user_ip' ";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_row($result);
if (mysql_num_rows($result) )
{
$_SESSION['stage'] = $row[1];
}
else
{
$_SESSION['stage'] = 1;
$strSQL2 = "INSERT INTO TABLENAME (user_ip, stage) VALUES ('$user_ip','$stage')";
$result = mysql_query($query) or die(mysql_error());
}
上記は機能しましたが、今は PDO ステートメントに切り替えたいと考えています。ここで私が PDO ステートメントで試したことがある場合:
$user_ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT COUNT(`stage`) FROM `TABLENAME` WHERE `user_ip` = ?";
$result = $pdo->prepare($sql);
$result->execute(array($user_ip));
$number_of_rows = $result->fetchColumn();
/* Check the number of rows that match the SELECT statement */
if ($result->fetchColumn() > 0) {
$_SESSION['stage'] = $row[1];
}
else {
$_SESSION['stage'] = 1;
$result = $pdo->prepare("INSERT INTO `BPGUV` (`user_ip`, `stage`) VALUES (:user_ip, :stage)";
$result->execute(
array(
':user_ip' => $user_ip,
':stage' => 1
)
);
}
PDOを使用してデータベースに接続し、PDOを使用してMySQLコマンドを使用できますが、上記のコードをPDOステートメントに正しく転送できないようです。