Aber das Komma ist definitiv fehl am Platze.
Habe das mal entfernt. Hier mal die volle Funktion falls davor was falsch ist:
$DatabaseName = "blablabla_db_cointracker";
$DatabaseURL = "blablabla";
$DatabaseUsr = "blabla_ct_client";
$DatabasePass = "blablabla";
$TableName = "`CoinTracker_DB`";
function DoesBanknoteExistInDB($q){
global $DatabaseName, $DatabaseURL, $DatabaseUsr, $DatabasePass, $TableName;
$conn = new mysqli($DatabaseURL, $DatabaseUsr, $DatabasePass, $DatabaseName);
$result = mysqli_query($conn, "SELECT id from $TableName WHERE id='$q'");
mysqli_close($conn); //Disconnect
echo "Found ".mysqli_num_rows($result)." rows. ";
if($result == null){
return false;
}
else{
return true;
}
}
$TestQuery = "YA459233005";
echo "Does $TestQuery exist in database? ".var_export(DoesBanknoteExistInDB($TestQuery), true); //Test
Alles anzeigen
Als Rückgabe erhalte ich:
Zitat
Found 0 rows. Does YA459233005 exist in database? true
Was mir dabei noch auffällt, ist das das einsetzen von Sachen funktioniert (Wie man sieht), aber das erstellen von Datenbanken nur in PHP nicht, mit dem gleichen Befehl und manuell eingesetzten Werten in PHP MyAdmin funktioniert es. Das erstellen von Tabellen aus dem code heraus schlägt auch fehl, wenn die Datenbank komplett leer ist, also keine Tables existieren:
$sql = "CREATE TABLE IF NOT EXISTS $TableName (
`id` TEXT,
`startplace` TEXT,
`startcoords` TEXT,
`firsttracked` TEXT,
`lastseendate` TEXT,
`lastseenplace` TEXT,
`lastseencoord` TEXT,
`worth` TEXT
)";
Frei von einer anderen Plattform auf der man oft solche Fragen sieht:
Warning: You are wide open to SQL Injections and should use parameterized prepared statements instead of manually building your queries. They are provided by PDO or by MySQLi. Never trust any kind of input! Even when your queries are executed only by trusted users, you are still in risk of corrupting your data. Escaping is not enough!
Damit muss ich mich noch befassen, allerdings stelle ich grade mein Plugin von einer CSV *hust* "Datenbank" auf MySQL um. Dafür sind alle Werte schon im Code generiert und mehrfach auf Gültigkeit geprüft (Habe dafür sogar eine eigene API gemacht xD). Werde mir das Thema trotzdem einmal angucken, ich bin mir ziemlich sicher dass ein Angreifer wenn er/sie nur will irgendeinen Bug finden wird der ein Workaround gibt. Nutze MySQLi dafür, wie benutze ich denn den builder dafür? Dumme Frage, ich weiß xD