正如标题所述,我正在从旧的MySQL_statements切换到PDO。我遇到问题但是在尝试查看'tableitem'
是否已存在时,如果确实存在,我想抓住'tableitem2'
,如果'tableitem'
不存在,我想设置'tableitem2'
到1.这是我的旧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语句中。
答案 0 :(得分:1)
$user_ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT COUNT(`stage`) FROM `TABLENAME` WHERE `user_ip` = ?";
$result = $con->prepare($sql);
$result->execute(array($user_ip));
$number_of_rows = $result->fetchColumn();
/* Check the number of rows that match the SELECT statement */
if ($number_of_rows > 0) {
$_SESSION['stage'] = $number_of_rows;
}
else {
$_SESSION['stage'] = 1;
$result = $pdo->prepare("INSERT INTO `TABLENAME` (`user_ip`, `stage`) VALUES (:user_ip, :stage)");
$result->execute(
array(
':user_ip' => $user_ip,
':stage' => 1
)
);
}
在第一个查询中,您直接在查询中传递$user_ip
,而不是稍后绑定它或作为参数传递。目前,该查询被视为:
SELECT COUNT(`stage`)
FROM `TABLENAME`
WHERE `user_ip` = 8.8.8.8
如你所知,语法错误。