PHP fel.. Webhotellet har bytt php 5.x till 7.x

Permalänk
Medlem

PHP fel.. Webhotellet har bytt php 5.x till 7.x

Webhotellet hade bytt php från 5.x då fungerade de gamla kommandona, men nu kör dom 7.x så jag har fått ändra en del och nu har jag stött på en patrull.
Får detta fel:
Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in /xxx/top.php on line 43
I filen top.php

function validate_race($wID) {global $con; $strsql = "SELECT $db2.races.last_signup FROM $db2.races WHERE races.last_signup >= ".date("Ymd")." AND races.id='".$wID."'"; $answer = mysqli_query($con,$strsql) or die (mysqli_error($answer)); if (mysqli_fetch_array($answer)) { return 1; } else { return 0; } }

Och i annat fil signup.php

else if (validate_race($_GET['race']) == 1) { if (isset($_SESSION['wID'])) { $strsql = "SELECT $db2.user_data.* FROM $db2.user_data,$db2.users WHERE user_id='". $_SESSION['wID'] ."'"; $result = mysqli_query($con,$strsql) or die (mysqli_error($con)); $user = mysqli_fetch_array($result); $strsql = "SELECT $db2.users.email,$db2.users.id FROM $db2.users WHERE id='". $_SESSION['wID'] ."'"; $result = mysqli_query($con,$strsql) or die (mysqli_error($con)); $foo = mysqli_fetch_array($result); $email = $foo['email']; }

Har försökt lösa detta i flera timmar nu utan kommit något vart. Gissningvis är det fel i $strsql-strängen i top.php är fel?
Tack förhand!

Visa signatur

/DragonII

Permalänk
Medlem

Kan inte hjälpa dig med koden tyvärr, men iaf Binero låter mig välja mellan diverse php versioner per domän/underdomän. Kan du lira en nödlösning och sänka php versionen tills du har fixat koden?

Visa signatur

Endeavour OS(arch) - Cassini Nova

Permalänk
Medlem
Skrivet av HoboCop:

Kan inte hjälpa dig med koden tyvärr, men iaf Binero låter mig välja mellan diverse php versioner per domän/underdomän. Kan du lira en nödlösning och sänka php versionen tills du har fixat koden?

Jo, jo, det kan man göra, men inte i längden, bättre fixa det så det fungerar i 7.x ifall webhotellet ska uppgradera igen och ska ta bort 5.x.

Visa signatur

/DragonII

Permalänk
Medlem

$con verkar inte vara en instans av mysqli utan en boolean istället. Hur sätter du $con?

Vad får du om du använder denna kod?

<?php $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db"); if (!$link) { echo "Error: Unable to connect to MySQL." . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; exit; } echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL; echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL; mysqli_close($link);

Permalänk
Medlem

@Marwelln:
Testade din kod:

Success: A proper connection to MySQL was made! The my_db database is great. Host information: xxxx via TCP/IP

Så det fungerar utan problem.

Har lagt in $con som du ser i koden, där innehåller all information som behövs att kontakta databasen.
i top.php har jag redan lagt in include dblib.php som man hämtar värderna för $con

Filen dblib.php

<? // Databas inställningar $host = "xxx"; $username = "yyy"; $password = "zzz"; $db2 = "aaa"; // Databasnamn //Anslut till databasservern // @mysql_connect($host, $username, $password) or print("Kunde ej koppla upp!"); // För PHP 5.x $con = @mysqli_connect($host, $username, $password) or print("Kunde ej koppla upp!"); // För PHP 7.x ?>

Visa signatur

/DragonII

Permalänk
Medlem

Du väljer inte en databas i din anslutning.

Prova med

mysqli_connect($host, $username, $password, $db2)

Permalänk
Medlem

@Marwelln: Tack, har löst det nu!

Visa signatur

/DragonII

Permalänk
Medlem

Nu får jag fel på annat: Warning: mysqli_query() expects parameter 3 to be integer, string given in /xxx/admin_users.php on line 103 Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /xxx/admin_users.php on line 104

<?php include ("dblib.php"); $strsql = "SELECT $db2.users.id,$db2.users.username,$db2.users.fullname,$db2.users.email FROM users WHERE disabled=0 ORDER BY users.fullname ASC"; $result = mysqli_query($con,$strsql); while ($user = mysqli_fetch_array($result)) { $res = mysqli_query($con,$db2,"SELECT COUNT(id) AS login_times FROM login_log WHERE $db2.user='". $user['id'] ."'"); $foo = mysqli_fetch_array($res); ?> <tr> <td> <?php echo $user['username']; ?> </td> <td> <?php echo $user['fullname']; ?> </td> <td> <?php echo $user['email']; ?> </td> <td> <?php echo $foo['login_times']; ?> </td> <td> <td> <a href="admin_users.php?action=remove&id=<?php echo $user['id']; ?>">Ta bort</a> </td> <td> <a href="admin_user_history.php?user=<?php echo $user['id']; ?>">Log</a> </td> </tr> <?php } ?>

Visa signatur

/DragonII

Permalänk
Medlem

Du ser inget konstigt med rad 103?

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Tekoppar:

Du ser inget konstigt med rad 103?

Skickades från m.sweclockers.com

Rad 103 är denna rad:

$res = mysqli_query($con,$db2,"SELECT COUNT(id) AS login_times FROM login_log WHERE $db2.user='". $user['id'] ."'");

Visa signatur

/DragonII

Permalänk
Medlem

Precis, och du ser inget konstigt med den? Jämför med din tidigare mysqli_query och läs dokumentationen så ska du snart se att du hittar felet.

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av DragonII:

Rad 103 är denna rad:

$res = mysqli_query($con,$db2,"SELECT COUNT(id) AS login_times FROM login_log WHERE $db2.user='". $user['id'] ."'");

Läser du ens felmeddelandena?
"mysqli_query() expects parameter 3 to be integer, string given"
Parameter 3 är alltså av fel datatyp. *slår upp dokumentationen för mysqli_query*

Skrivet av Dokumentationen:

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

http://php.net/manual/en/mysqli.query.php

Felet är alltså att du skickar databasnamn som $query och ditt query som $resultmode.

Databasnamnet har ingenting där att göra. Det använder du bara när du instansierar databasanslutningen. Ditt query ser också väldigt konstigt ut. Varför skriver du $db2. överallt?

Visa signatur

Spela Swemantle! Du vet att du vill.

Ibland har jag fel, men då är det någon annans fel.