|
1 |
#*********************************************************
|
|
2 |
# Written by: Bradley University
|
|
3 |
# Dr. Steven Dolins
|
|
4 |
# Use: Transform and Load Raw Specimen
|
|
5 |
# GBIF Data from GBIF file into the
|
|
6 |
# Staging Table (StagingRawSpecimen).
|
|
7 |
# Version: 2.0
|
|
8 |
# Date: November 09, 2009
|
|
9 |
#*********************************************************
|
|
10 |
|
|
11 |
<?php
|
|
12 |
## ======== Connect to database
|
|
13 |
include('connect.php');
|
|
14 |
|
|
15 |
## ======== Spacing for buttons in index.php
|
|
16 |
echo "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";
|
|
17 |
|
|
18 |
## ======== Identify data file
|
|
19 |
$Validation_check = 0;
|
|
20 |
$GBIFFile = 'GBIF.txt';
|
|
21 |
$duplicateEntries=0;
|
|
22 |
$successEntries=0;
|
|
23 |
$validation_errors=0;
|
|
24 |
$recordCount = 0;
|
|
25 |
|
|
26 |
## ======== Load file as a character array - each entry is one line of text with newline still attached
|
|
27 |
$GBIFFile = fopen($GBIFFile, 'r');
|
|
28 |
|
|
29 |
##==== Pull off a single line from file and add it to array ====
|
|
30 |
|
|
31 |
//$line = fgets($GBIFFile); //UNCOMMENT ONLY IF TITLES ARE INCLUDED IN FIRST LINE OF FILE
|
|
32 |
while($line = fgets($GBIFFile))
|
|
33 |
{
|
|
34 |
$line = trim($line);
|
|
35 |
$arr = explode("\t", $line);
|
|
36 |
$recordCount++;
|
|
37 |
|
|
38 |
## ======== Ensure that data enetered is a full tuple (has all columns associated with GBIF data)
|
|
39 |
|
|
40 |
if(count($arr) != 30)
|
|
41 |
{
|
|
42 |
reportError(NULL, NULL, $recordCount, "Incomplete tuple, ignored");
|
|
43 |
continue;
|
|
44 |
}
|
|
45 |
|
|
46 |
## ======== Clean up values in array and check data consistency
|
|
47 |
|
|
48 |
checkArray();
|
|
49 |
|
|
50 |
## ======== Populate an array which holds only the values to be inserted
|
|
51 |
|
|
52 |
$arrayInsert['InstitutionCD'] = $arr[5];
|
|
53 |
$arrayInsert['CollectionCD'] = $arr[6];
|
|
54 |
$arrayInsert['CatalogNO'] = $arr[7];
|
|
55 |
$arrayInsert['DBSourceName'] = "GBIF";
|
|
56 |
$arrayInsert['LastDateModified'] = $arr[8];
|
|
57 |
$arrayInsert['ScientificName'] = $arr[12];
|
|
58 |
$arrayInsert['ScientificNameOriginal'] = $arr[10];
|
|
59 |
$arrayInsert['Family'] = $arr[14];
|
|
60 |
$arrayInsert['Genus'] = $arr[16];
|
|
61 |
$arrayInsert['AuthorOfScientificName'] = $arr[11];
|
|
62 |
$arrayInsert['Country'] = $arr[17];
|
|
63 |
$arrayInsert['StateProvince'] = $arr[20];
|
|
64 |
$arrayInsert['County'] = $arr[19];
|
|
65 |
$arrayInsert['MinimumElevationInMeter'] = $arr[26];
|
|
66 |
$arrayInsert['MaximumElevationInMeter'] = $arr[27];
|
|
67 |
$arrayInsert['LatestDateCollected'] = $arr[4];
|
|
68 |
$arrayInsert['Collector'] = $arr[2];
|
|
69 |
$arrayInsert['DecimalLatitude'] = $arr[21];
|
|
70 |
$arrayInsert['DecimalLongitude'] = $arr[23];
|
|
71 |
$arrayInsert['Locality'] = $arr[18];
|
|
72 |
$arrayInsert['IdentifiedBy'] = $arr[9];
|
|
73 |
$arrayInsert['VerbatimLatitude'] = $arr[22];
|
|
74 |
$arrayInsert['VerbatimLongitude'] = $arr[24];
|
|
75 |
$arrayInsert['SpecificEpithet'] = $arr[28];
|
|
76 |
$arrayInsert['InfraspecificEpithet'] = $arr[29];
|
|
77 |
$arrayInsert['GBIFFamilyOriginal'] = $arr[13];
|
|
78 |
$arrayInsert['GBIFGenusOriginal'] = $arr[15];
|
|
79 |
$arrayInsert['InfraspecificRank'] = $arr[30];
|
|
80 |
|
|
81 |
|
|
82 |
## ======== Ensure primary key values and not null values (CollectionCD, CatalogNO, InstitutionCD) are not null
|
|
83 |
|
|
84 |
if(is_null($arrayInsert['InstitutionCD']) OR is_null($arrayInsert['CatalogNO']) OR is_null($arrayInsert['InstitutionCD']))
|
|
85 |
{
|
|
86 |
reportError(NULL, NULL, NULL, "One or more non-null value is NULL");
|
|
87 |
continue;
|
|
88 |
}
|
|
89 |
|
|
90 |
## ======== Filter out MOBOT and NYBG Data since those are inserted from another file
|
|
91 |
|
|
92 |
if ( strstr($arrayInsert['InstitutionCD'], "MOBOT") or strstr($arrayInsert['InstitutionCD'] , "NYBG"))
|
|
93 |
{
|
|
94 |
reportError($arrayInsert['CollectionCD'], $arrayInsert['CatalogNO'], $arrayInsert['InstitutionCD'], "Institution code contains either MOBOT or NYBG");
|
|
95 |
continue;
|
|
96 |
}
|
|
97 |
|
|
98 |
## ======== Generate SQL code to insert desired information
|
|
99 |
|
|
100 |
$sql = sprintf("INSERT INTO StagingRawSpecimen
|
|
101 |
(
|
|
102 |
InstitutionCD,
|
|
103 |
CollectionCD,
|
|
104 |
CatalogNO,
|
|
105 |
DBSourceName,
|
|
106 |
LastDateModified,
|
|
107 |
ScientificName,
|
|
108 |
ScientificNameOriginal,
|
|
109 |
GBIFFamilyOriginal,
|
|
110 |
Family,
|
|
111 |
GBIFGenusOriginal,
|
|
112 |
Genus,
|
|
113 |
AuthorOfScientificName,
|
|
114 |
Country,
|
|
115 |
StateProvince,
|
|
116 |
County,
|
|
117 |
MinimumElevationInMeter,
|
|
118 |
MaximumElevationInMeter,
|
|
119 |
LatestDateCollected,
|
|
120 |
Collector,
|
|
121 |
DecimalLatitude,
|
|
122 |
DecimalLongitude,
|
|
123 |
Locality,
|
|
124 |
IdentifiedBy,
|
|
125 |
VerbatimLatitude,
|
|
126 |
VerbatimLongitude,
|
|
127 |
SpecificEpithet,
|
|
128 |
InfraspecificEpithet,
|
|
129 |
InfraspecificRank
|
|
130 |
)
|
|
131 |
VALUES
|
|
132 |
(
|
|
133 |
%s,
|
|
134 |
%s,
|
|
135 |
%s,
|
|
136 |
%s,
|
|
137 |
%s,
|
|
138 |
%s,
|
|
139 |
%s,
|
|
140 |
%s,
|
|
141 |
%s,
|
|
142 |
%s,
|
|
143 |
%s,
|
|
144 |
%s,
|
|
145 |
%s,
|
|
146 |
%s,
|
|
147 |
%s,
|
|
148 |
%s,
|
|
149 |
%s,
|
|
150 |
%s,
|
|
151 |
%s,
|
|
152 |
%s,
|
|
153 |
%s,
|
|
154 |
%s,
|
|
155 |
%s,
|
|
156 |
%s,
|
|
157 |
%s,
|
|
158 |
%s,
|
|
159 |
%s,
|
|
160 |
%s
|
|
161 |
)
|
|
162 |
",
|
|
163 |
insertSQLData($arrayInsert['InstitutionCD']),
|
|
164 |
insertSQLData($arrayInsert['CollectionCD']),
|
|
165 |
insertSQLData($arrayInsert['CatalogNO']),
|
|
166 |
insertSQLData($arrayInsert['DBSourceName']),
|
|
167 |
insertSQLData($arrayInsert['LastDateModified']),
|
|
168 |
insertSQLData($arrayInsert['ScientificName']),
|
|
169 |
insertSQLData($arrayInsert['ScientificNameOriginal']),
|
|
170 |
insertSQLData($arrayInsert['GBIFFamilyOriginal']),
|
|
171 |
insertSQLData($arrayInsert['Family']),
|
|
172 |
insertSQLData($arrayInsert['GBIFGenusOriginal']),
|
|
173 |
insertSQLData($arrayInsert['Genus']),
|
|
174 |
insertSQLData($arrayInsert['AuthorOfScientificName']),
|
|
175 |
insertSQLData($arrayInsert['Country']),
|
|
176 |
insertSQLData($arrayInsert['StateProvince']),
|
|
177 |
insertSQLData($arrayInsert['County']),
|
|
178 |
insertSQLData($arrayInsert['MinimumElevationInMeter']),
|
|
179 |
insertSQLData($arrayInsert['MaximumElevationInMeter']),
|
|
180 |
insertSQLData($arrayInsert['LatestDateCollected']),
|
|
181 |
insertSQLData($arrayInsert['Collector']),
|
|
182 |
insertSQLData($arrayInsert['DecimalLatitude']),
|
|
183 |
insertSQLData($arrayInsert['DecimalLongitude']),
|
|
184 |
insertSQLData($arrayInsert['Locality']),
|
|
185 |
insertSQLData($arrayInsert['IdentifiedBy']),
|
|
186 |
insertSQLData($arrayInsert['VerbatimLatitude']),
|
|
187 |
insertSQLData($arrayInsert['VerbatimLongitude']),
|
|
188 |
insertSQLData($arrayInsert['SpecificEpithet']),
|
|
189 |
insertSQLData($arrayInsert['InfraspecificEpithet']),
|
|
190 |
insertSQLData($arrayInsert['InfraspecificRank'])
|
|
191 |
);
|
|
192 |
|
|
193 |
//echo("<br> <br> $sql <br> <br>");
|
|
194 |
|
|
195 |
## ======== Check whether a tuple with the variables you're trying to enter has already been entered (trying to insert duplicate tuple)
|
|
196 |
|
|
197 |
if(mysql_query($sql))
|
|
198 |
{
|
|
199 |
$successEntries++;
|
|
200 |
}
|
|
201 |
else if(mysql_errno() == 1062)
|
|
202 |
{
|
|
203 |
$duplicateEntries++;
|
|
204 |
//reportError($arrayInsert['CollectionCD'], $arrayInsert['CatalogNO'], NULL, mysql_error());
|
|
205 |
continue;
|
|
206 |
}
|
|
207 |
else
|
|
208 |
{
|
|
209 |
reportError($arrayInsert['CollectionCD'], $arrayInsert['CatalogNO'], NULL, mysql_error());
|
|
210 |
}
|
|
211 |
|
|
212 |
|
|
213 |
## ======== Validate data entered
|
|
214 |
if ($Validation_check) // Validation Check status
|
|
215 |
{
|
|
216 |
$validation_query = sprintf(
|
|
217 |
"SELECT * FROM StagingRawSpecimen WHERE
|
|
218 |
CollectionCD %s
|
|
219 |
AND CatalogNO %s",
|
|
220 |
selectSQLData($arrayInsert['CollectionCD']),
|
|
221 |
selectSQLData($arrayInsert['CatalogNO'])
|
|
222 |
);
|
|
223 |
|
|
224 |
//echo("<br> <br> $validation_query <br> <br>");
|
|
225 |
|
|
226 |
$validation_result = mysql_query($validation_query) OR reportError($arrayInsert['CollectionCD'], $arrayInsert['CatalogNO'], NULL, mysql_error());
|
|
227 |
|
|
228 |
if(mysql_num_rows($validation_result) > 1) ## IF more than 1 record has these properties, then NOT UNIQUE
|
|
229 |
{
|
|
230 |
reportError($arrayInsert['CollectionCD'], $arrayInsert['CatalogNO'], NULL, "Validation result not unique");
|
|
231 |
continue; //error, skip the rest of validation
|
|
232 |
}
|
|
233 |
|
|
234 |
if(mysql_num_rows($validation_result) < 1)
|
|
235 |
{
|
|
236 |
reportError($arrayInsert['CollectionCD'], $arrayInsert['CatalogNO'], NULL, "Validation result does not exist");
|
|
237 |
continue; //error, skip the rest of validation
|
|
238 |
}
|
|
239 |
|
|
240 |
else //(num_rows == 1)
|
|
241 |
{
|
|
242 |
$validation_result_row = mysql_fetch_assoc($validation_result) OR DIE("Error - no result found");
|
|
243 |
|
|
244 |
$CatalogNO = $arrayInsert['CatalogNO'];
|
|
245 |
$CollectionCD = $arrayInsert['CollectionCD'];
|
|
246 |
foreach($arrayInsert AS $key => $data)
|
|
247 |
{
|
|
248 |
## ======== check if the result found in the database matches that entered (Check both exact string match and numerical equality)
|
|
249 |
|
|
250 |
if((strcasecmp($validation_result_row[$key], $data) != 0) AND (!checkDifference($data, $validation_result_row[$key], 5)))
|
|
251 |
{
|
|
252 |
reportError($CollectionCD, $CatalogNO, $key, "Result does not match data entered |--| $data |--| $validation_result_row[$key] |--|");
|
|
253 |
}
|
|
254 |
}
|
|
255 |
}
|
|
256 |
} //end while loop
|
|
257 |
}
|
|
258 |
## ======== Display results to user
|
|
259 |
|
|
260 |
if($duplicateEntries >= 1)
|
|
261 |
{
|
|
262 |
echo "<br>" . $duplicateEntries . " record(s) has been skipped, key already exists<br>";
|
|
263 |
}
|
|
264 |
|
|
265 |
if($successEntries >= 1)
|
|
266 |
{
|
|
267 |
echo "<br>" . $successEntries . " record(s) has been successfully inserted<br>";
|
|
268 |
}
|
|
269 |
echo("<br> $validation_errors Validation Errors");
|
|
270 |
|
|
271 |
// =============================
|
|
272 |
// ======== END PROGRAM ========
|
|
273 |
// =============================
|
|
274 |
|
|
275 |
|
|
276 |
## ======================================
|
|
277 |
## Name: checkArray
|
|
278 |
## Function: Checks the data form the file and formats it for entry into the staging table
|
|
279 |
## Internal Variables:
|
|
280 |
## Global Variables: $arr
|
|
281 |
## Calls Function: None
|
|
282 |
## Called by: Main loop
|
|
283 |
## Written by: Andrew Becker, Mark Sheehan
|
|
284 |
## Last Modified: 07-22-09
|
|
285 |
## =======================================
|
|
286 |
|
|
287 |
function checkArray()
|
|
288 |
{
|
|
289 |
global $arr;
|
|
290 |
for($a=0; $a<31; $a++)
|
|
291 |
{
|
|
292 |
if(!(array_key_exists($a, $arr)))
|
|
293 |
{
|
|
294 |
$arr[$a] = ' ';
|
|
295 |
}
|
|
296 |
|
|
297 |
## ==== Trim white spaces and newline off of front and end of string (necessary for values at end of line)
|
|
298 |
|
|
299 |
$arr[$a] = trim($arr[$a], ' ');
|
|
300 |
|
|
301 |
## ==== Replace Empty values ('') with null keyword
|
|
302 |
|
|
303 |
if($arr[$a] == '' OR $arr[$a] == '\N')
|
|
304 |
{
|
|
305 |
$arr[$a] = NULL;
|
|
306 |
}
|
|
307 |
|
|
308 |
if(($a == 4 OR $a == 8) AND $arr[$a] != NULL) ## CHANGED JUN 22 09 - IF date/time AND NOT NULL, then convert it to a form that mysql/PHP recognizes - YYYY-MM-DD HH-MM-SS
|
|
309 |
{
|
|
310 |
if($a == 8)
|
|
311 |
{
|
|
312 |
//==== Actual data in GBIF file in format "MM-DD-YYYY HH:MM"
|
|
313 |
//Start formatting date
|
|
314 |
|
|
315 |
$dateFormat = explode(' ', $arr[$a]);
|
|
316 |
$date = $dateFormat[0];
|
|
317 |
$time = $dateFormat[1];
|
|
318 |
$date = explode('-', $date); //break date up into MM DD YYYY
|
|
319 |
$month = str_pad($date[1], 2, '0', STR_PAD_LEFT); //if only entered as 5/27/2008, need it in form 05/27/2008 so need padding on left
|
|
320 |
$day = str_pad($date[2], 2, '0', STR_PAD_LEFT);
|
|
321 |
$year = $date[0];
|
|
322 |
|
|
323 |
$time = explode(':', $time);
|
|
324 |
$hour = $time[0];
|
|
325 |
$hour = str_pad($hour, 2, '0', STR_PAD_LEFT); //same issue as above
|
|
326 |
$minute = $time[1];
|
|
327 |
$second = "00"; //seconds not given, assume 00
|
|
328 |
$arr[$a] = sprintf("%s-%s-%s %s:%s:%s", $year, $month, $day, $hour, $minute, $second);
|
|
329 |
//echo(" $arr[$a] <br>");
|
|
330 |
}
|
|
331 |
else if($a == 4)
|
|
332 |
{
|
|
333 |
|
|
334 |
//==== Actual data in GBIF file in format MM/DD/YYYY OR YYYY-MM-DD
|
|
335 |
|
|
336 |
if(stripos($arr[$a], '/')) // if in MM/DD/YYYY format
|
|
337 |
{
|
|
338 |
$dateFormat = explode('/', $arr[$a]);
|
|
339 |
$month = str_pad($dateFormat[0], 2, '0', STR_PAD_LEFT);
|
|
340 |
$day = str_pad($dateFormat[1], 2, '0', STR_PAD_LEFT);
|
|
341 |
$year = $dateFormat[2];
|
|
342 |
|
|
343 |
$arr[$a] = sprintf("%s-%s-%s", $year, $month, $day);
|
|
344 |
}
|
|
345 |
else if(stripos($arr[$a], '-')) //if in YYYY-MM-DD format
|
|
346 |
{
|
|
347 |
$dateFormat = explode('-', $arr[$a]);
|
|
348 |
$month = str_pad($dateFormat[1], 2, '0', STR_PAD_LEFT);
|
|
349 |
$day = str_pad($dateFormat[2], 2, '0', STR_PAD_LEFT);
|
|
350 |
$year = $dateFormat[0];
|
|
351 |
|
|
352 |
$arr[$a] = sprintf("%s-%s-%s", $year, $month, $day);
|
|
353 |
}
|
|
354 |
else
|
|
355 |
{
|
|
356 |
reportError($arr[6], $arr[7], $arr[$a], "Date format for ||$arr[$a]|| not found.");
|
|
357 |
}
|
|
358 |
}
|
|
359 |
}
|
|
360 |
else if($a == 26) // if elevation range is given as XXX-YYY in one field instead of as minimum and maximum
|
|
361 |
{
|
|
362 |
$minMax = explode('-', $arr[$a]);
|
|
363 |
if(sizeof($minMax) > 1)
|
|
364 |
{
|
|
365 |
$arr[26] = $minMax[0];
|
|
366 |
$arr[27] = $minMax[1];
|
|
367 |
}
|
|
368 |
}
|
|
369 |
else if ($a == 12) // To get the species and subspeices from the scientific name, Dhaval Shah
|
|
370 |
{
|
|
371 |
$spe_subspe = explode(' ',$arr[$a]);
|
|
372 |
if(sizeof($spe_subspe) > 1 and !(is_numeric($spe_subspe[1])))
|
|
373 |
{
|
|
374 |
$arr[28] = trim($spe_subspe[1]);
|
|
375 |
if(sizeof($spe_subspe) > 3 and !(is_numeric($spe_subspe[2])))
|
|
376 |
{
|
|
377 |
|
|
378 |
if ((strstr($spe_subspe[2], "var") or strstr($spe_subspe[2], "subsp") or strstr($spe_subspe[2], "ssp") or strstr($spe_subspe[2], "sbsp") or strstr($spe_subspe[2], "forma") or strstr($spe_subspe[2], "fo") or strstr($spe_subspe[2], "f") or strstr($spe_subspe[2], "cv")) and (strlen($spe_subspe[2]) < 6))
|
|
379 |
{
|
|
380 |
if ( strstr($spe_subspe[2], "ssp"))
|
|
381 |
{
|
|
382 |
$spe_subspe[2] = "subsp.";
|
|
383 |
}
|
|
384 |
$arr[30] = trim($spe_subspe[2]);
|
|
385 |
$arr[29] = trim($spe_subspe[3]);
|
|
386 |
}
|
|
387 |
else
|
|
388 |
{
|
|
389 |
$arr[30] = NULL;
|
|
390 |
$arr[29] = NULL;
|
|
391 |
}
|
|
392 |
}
|
|
393 |
else
|
|
394 |
{
|
|
395 |
$arr[30] = NULL;
|
|
396 |
$arr[29] = NULL;
|
|
397 |
}
|
|
398 |
|
|
399 |
}
|
|
400 |
else
|
|
401 |
{
|
|
402 |
$arr[28] = NULL;
|
|
403 |
$arr[29] = NULL;
|
|
404 |
$arr[30] = NULL;
|
|
405 |
}
|
|
406 |
}
|
|
407 |
}
|
|
408 |
}
|
|
409 |
|
|
410 |
## ========================================
|
|
411 |
## Name: reportError
|
|
412 |
## Function: creates a detailed error report in errorLog
|
|
413 |
## Internal Variables:
|
|
414 |
## Globals: $recordCount, $GBIFFile
|
|
415 |
## Calls Function: None
|
|
416 |
## Called by: Main Loop
|
|
417 |
## Written by: Mark Sheehan
|
|
418 |
## Last Updated: 07-22-09
|
|
419 |
## =======================================
|
|
420 |
|
|
421 |
function reportError($CollectionCD, $CatalogNo, $columnName, $Error)
|
|
422 |
{
|
|
423 |
GLOBAL $recordCount;
|
|
424 |
GLOBAL $GBIFFile;
|
|
425 |
//echo("Creating error log for $CollectionCD | $CatalogNo | $Error <br><br>");
|
|
426 |
$errorReport = sprintf(
|
|
427 |
"INSERT INTO ErrorLog (CollectionCD, CatalogNO, RawDataFileName, RawRecordNO, StagingTableName, StagingColumnName, ErrorDescription)
|
|
428 |
VALUES (%s, %s, %s, %s, %s, %s, %s)",
|
|
429 |
insertSQLData($CollectionCD),
|
|
430 |
insertSQLData($CatalogNo),
|
|
431 |
insertSQLData("GBIFFile.txt"),
|
|
432 |
insertSQLData($recordCount),
|
|
433 |
insertSQLData("StagingRawSpecimen"),
|
|
434 |
insertSQLData($columnName),
|
|
435 |
insertSQLData($Error)
|
|
436 |
);
|
|
437 |
//echo ("<br> $errorReport <br>");
|
|
438 |
mysql_query($errorReport) OR DIE("Failed to enter log into error report." . mysql_error());
|
|
439 |
}
|
|
440 |
|
|
441 |
## =======================================
|
|
442 |
## Name: checkDifference
|
|
443 |
## Function: determines whether the difference between two numbers is close to 0 at given precision
|
|
444 |
## Internal Variables:
|
|
445 |
## Globals: None
|
|
446 |
## Calls Function: None
|
|
447 |
## Called by: main loop
|
|
448 |
## Written by: Mark Sheehan
|
|
449 |
## Last updated: 07-29-09
|
|
450 |
## ======================================
|
|
451 |
|
|
452 |
function checkDifference($firstNum, $secondNum, $precision)
|
|
453 |
{
|
|
454 |
if(abs($firstNum - $secondNum) < 2 * pow(10, -$precision))
|
|
455 |
{
|
|
456 |
return TRUE;
|
|
457 |
}
|
|
458 |
else
|
|
459 |
{
|
|
460 |
return FALSE;
|
|
461 |
}
|
|
462 |
}
|
|
463 |
|
|
464 |
## =======================================
|
|
465 |
## Name: InsertSQLData
|
|
466 |
## Function: Formats data to be inserted for SQL insert query
|
|
467 |
## Internal Variables:
|
|
468 |
## Globals: None
|
|
469 |
## Calls Function: None
|
|
470 |
## Called by: Main Loop
|
|
471 |
## Written by: Mark Sheehan
|
|
472 |
## Last Updated: 07-22-09
|
|
473 |
## ======================================
|
|
474 |
|
|
475 |
function InsertSQLData($string)
|
|
476 |
{
|
|
477 |
if($string == '' OR $string == NULL)
|
|
478 |
{
|
|
479 |
return('NULL');
|
|
480 |
}
|
|
481 |
else
|
|
482 |
{
|
|
483 |
return(sprintf("'%s'", mysql_real_escape_string($string)));
|
|
484 |
}
|
|
485 |
}
|
|
486 |
|
|
487 |
## =======================================
|
|
488 |
## Name: SelectSQLData
|
|
489 |
## Function: Formats data to be inserted into SQL select query
|
|
490 |
## Internal Variables:
|
|
491 |
## Globals: None
|
|
492 |
## Calls Function: None
|
|
493 |
## Called by: Main Loop
|
|
494 |
## Written by: Mark Sheehan
|
|
495 |
## Last Updated: 07-22-09
|
|
496 |
## ========================================
|
|
497 |
|
|
498 |
function SelectSQLData($string)
|
|
499 |
{
|
|
500 |
if($string == '' OR $string == NULL)
|
|
501 |
{
|
|
502 |
return("IS NULL");
|
|
503 |
}
|
|
504 |
else
|
|
505 |
{
|
|
506 |
return(sprintf("= '%s'", mysql_real_escape_string($string)));
|
|
507 |
}
|
|
508 |
}
|
|
509 |
|
|
510 |
?>
|
Added inputs/GBIF/src with small files that can be under version control