我有一个体育游戏选择应用程序,持续数周。现在,如果你选择一个你已经选择的一周,我会得到一个php错误。而不是我想向用户显示一条消息,说你本周已经选择了这个消息。
这是我在同一周选择时得到的错误
ERROR: duplicate key value violates unique constraint "user_record_pkey"
DETAIL: Key (username, week_no)=(john, 1) already exists
继承我的代码
<?php
session_start();
require_once("dbconnect.php");
$flag = 0;
$row = 1;
// $weekest = $_POST['weekNum'];
$result3 = pg_query($conn, 'INSERT INTO demo.user_record VALUES (\''.$_SESSION['username'].'\','.$_POST['weekNum'].',0,0)') or die(pg_last_error());
//echo $_POST['picks0'];
//echo $_POST['picks1'];
for($row=1;$row<=$_POST['numPicks'];$row++){
$pickName = "picks" . $row;
echo $pickName;
if($_POST[$pickName] == "picks$row")
{
$pick = $_POST['Tname'.$flag];
$flag+=2;
}
else
{
$flag++;
$pick = $_POST['Tname' . $flag];
$flag++;
}
//echo "error2";
$result2 = pg_prepare($conn, "myquery".$row, 'INSERT INTO demo.user_picks VALUES ($1,$2,$3,$4)') or die(pg_last_error());
$result2 = pg_execute($conn, "myquery".$row, array($_SESSION['username'],$_POST['weekNum'], $row, $pick)) or die(pg_last_error());
echo "finished";
}
?>
答案 0 :(得分:0)
首先,函数pg_query() returns FALSE on error。你需要检查一下。链接文档中有代码示例。
其次,您的代码很容易注入SQL。你不应该使用pg_query()来解决这类问题。你应该使用pg_query_params()代替。 (相同链接。搜索&#34;用户提供的数据的字符串插值非常危险&#34;。)