Я не могу понять правильную формулировку / синтаксис для оператора запроса. Я хочу проверить, есть ли уже школа в нашей таблице (называет школы), которая соответствует названию школы. Если это так, то государство уже существует. Любой вклад был бы великолепен!
//create a connection (the connection is made in another php file)
$obj = new MyConnection();
$obj->setConn();
$obj->displayValues();
$qObj = new MyCode();
$qObj->setConn( $obj->getConn());
//Query to put all the school data into db
$q1 = "INSERT INTO schools(
SchoolName,
SchoolWebsite,
City,
State,
Locale,
Sector,
Tuition,
GradRate,
FacToStudRatio,
StudentPop,
FreshmenPop,
PercentWomen,
PercentMen,
PercentAdmitted,
AverageGpa,
AverageScore)
VALUES ('$SchoolName',
'$SchoolWebsite',
'$City',
'$State',
'$Locale',
'$Sector',
'$Tuition',
'$GradRate',
'$FacToStudRatio',
'$StudentPop',
'$FreshmenPop',
'$PercentWomen',
'$PercentMen',
'$PercentAdmitted',
'$AverageGpa',
'$AverageScore')";$findResult = pg_query( 'SELECT * FROM schools WHERE schoolname =.$SchoolName);
if ($findResult != 0)
{
echo "School Record Already Exists<br/>";
die;
}
$qObj->setQuery($q1);
$qObj->runQuery();
У тебя есть '
отсутствует в вашем коде
$findResult = pg_query( 'SELECT * FROM schools WHERE schoolname ='.$SchoolName)
^
Это связано с проблема «upsert» — это вставка, если не существует. Делать это сложнее, чем вы ожидаете, и очень склонны к гоночным условиям.
Лучшее решение всегда unique
ограничение или уникальный индекс. Попробуйте вставить, и если вы получите ошибку, вы знаете, что строка уже существует.
Альтернативой является LOCK TABLE ... IN EXCLUSIVE MODE
таблицу, так что вы гарантируете, что никто не сможет одновременно вставить в нее одинаковую строку. Это не хорошо масштабируется, хотя.