Hallo,

Ik heb een script dat netjes werkte in php5.5, maar nu vast loopt in php7.0

mysql_query vervangen door mysqli_query is waarschijnlijk te eenvoudig om op te lossen?

Hartelijk dank voor jullie suggesties/ hulp.

Tom

<?php
  // Row Inserted event                                                                                                                                  
			function Row_Inserted($rsold, &$rsnew) {
			$rsnew['id_optreden'];
			$rsnew['naam'];
			$rsnew['plaats'];
			$rsnew['datum'];
			$rsnew['status'];
			$rsnew['prijs']; 
			$rsnew['extra']; 
			$rsnew['contract'];
			$rsnew['betaald']; 
			$rsnew['contract_type']; 
			$rsnew['contract_naam'];
			$rsnew['aantal'];
			$rsnew['site']; 
			 $sql_statement = ("SELECT * FROM `fanfaristen`");                               
			$resultset = mysql_query($sql_statement);                                  
			while ($rij =mysql_fetch_array($resultset)){
			 $run = ew_Execute("INSERT INTO `deelname` (`datum`,`id_optreden`,`id_fanfarist`) VALUES ('".$rsnew['datum']."','".$rsnew['id_optreden']."', '".$rij['id_fanfarist']."')");                                                             
			}
			$MyResult = ew_Execute("INSERT INTO `optredens_archief` (`id_optreden`, `naam`, `plaats`, `datum`, `status`, `prijs`,`extra`, `contract`, `betaald`, `contract_type`, `contract_naam`, `aantal`, `site`) 
			VALUES (
			'".$rsnew['id_optreden']."',
			'".$rsnew['naam']."',
			'".$rsnew['plaats']."',
			'".$rsnew['datum']."',
			'".$rsnew['status']."',
			'".$rsnew['prijs']."',
			 '".$rsnew['extra']."',
			'".$rsnew['contract']."',
			'".$rsnew['betaald']."',
			'".$rsnew['contract_type']."',
			'".$rsnew['contract_naam']."',
			'".$rsnew['aantal']."',
			'".$rsnew['site']."')"); 
			return TRUE;
						}
?>

Stap over op MySQLi. Maar onthoud dat het vrijwel niet alleen bij een 'i' toevoegen blijft.
Lees ook: http://phptuts.nl/view/26/

Verder heb ik de titel even aangepast, en dit topic naar het juiste forum verhuisd.
Een paar tips om je te helpen:

Bij het connecten met mysqli_connect() geef je direct ook de naam op van de database waarmee je wilt gaan werken. De functie mysql_select_db() kun je vervolgens gewoon weghalen.

Op http://php.net kun je alle mysqli functies vinden. Kijk dan naar de uitleg in de 'Procedural style'. Die is het meeste zoals je het gewend bent.

Het grootste verschil is misschien toch wel dat je bij een aantal functies de connectie variabele moet doorgeven die je krijgt van mysqli_connect().

<?php
$link = mysqli_connect('host', 'username', 'password', 'database_name');

/* check connection */
if (mysqli_connect_errno()) {
printf("Kan niet verbinden met database: %s\n", mysqli_connect_error());
exit();
}

/* Voorbeeld van de mysqli_query() functie */
$result = mysqli_query($link, "SELECT * FROM users");
?>
en in het script in de eerste post moet je je dus even afvragen hoe je die $link van Frank in je function() gaat krijgen.
Ik snap niet eens wat die functie zou moeten doen, maar volgens mij doet deze of teveel, of niet genoeg, in die zin dat alle bovenstaande bewerkingen als één ondeelbare actie uitgevoerd zouden moeten worden (oftewel: gebruik een transactie).

Regel 4 t/m regel 16 doet sowieso niets...

Nog voordat je dit omzet naar MySQLi zou je je moeten afvragen wat deze functie aan werk zou moeten verzetten. Leg dit ook ergens vast, al is dit maar met enkele regels annotatie. Misschien kom je dan tot de conclusie dat dit een partij brakke code is die nodig aan een revisie toe is of kun je wellicht delen splitsen in meer logische componenten.
Die loop met inserts kan ook in 1x:

<?php
$s = "
INSERT INTO deelname
(datum, id_optreden, id_fanfarist)
SELECT '" .$rsnew['datum']."','".$rsnew['id_optreden']."', id_fanfarist FROM fanfaristen";
?>

Waarbij ik me afvraag of bij id_optreden ook een andere datum kan staan dan de aangegeven datum.
Zo niet, dan sla je dus info dubbel op en zou het betekenen dat je bij het verplaatsen van een optreden van 6 naar 7 december je dus ook alle records in de tabel Deelname langs moet in plaats van alleen bij het optreden de datum aan te passen.
Hartelijk dank aan allen, ik heb het script aangepast, alles werkt opnieuw zoals voorheen!

nogmaals dank!

Tom
wat is het geworden?

    // Row Inserted event                                                                                                                                  
		function Row_Inserted($rsold, &$rsnew) {
		$rsnew['id_optreden'];
		$rsnew['naam'];
		$rsnew['plaats'];
		$rsnew['datum'];
		$rsnew['status'];
		$rsnew['prijs']; 
		$rsnew['extra']; 
		$rsnew['contract'];
		$rsnew['betaald']; 
		$rsnew['contract_type']; 
		$rsnew['contract_naam'];
		$rsnew['aantal'];
		$rsnew['site']; 
		
//		 $sql_statement = ("SELECT * FROM `fanfaristen`");
		$link = mysqli_connect('localhost', 'login', 'wachtwoord', 'database');   
		$resultset = mysqli_query($link,"SELECT * FROM `fanfaristen`");                                  
		while ($rij =mysqli_fetch_array($resultset)){
		 $run = ew_Execute("INSERT INTO `deelname` (`datum`,`id_optreden`,`id_fanfarist`) VALUES ('".$rsnew['datum']."','".$rsnew['id_optreden']."', '".$rij['id_fanfarist']."')");                                                             
		}
		$MyResult = ew_Execute("INSERT INTO `optredens_archief` (`id_optreden`, `naam`, `plaats`, `datum`, `status`, `prijs`,`extra`, `contract`, `betaald`, `contract_type`, `contract_naam`, `aantal`, `site`) 
		VALUES (
		'".$rsnew['id_optreden']."',
		'".$rsnew['naam']."',
		'".$rsnew['plaats']."',
		'".$rsnew['datum']."',
		'".$rsnew['status']."',
		'".$rsnew['prijs']."',
		 '".$rsnew['extra']."',
		'".$rsnew['contract']."',
		'".$rsnew['betaald']."',
		'".$rsnew['contract_type']."',
		'".$rsnew['contract_naam']."',
		'".$rsnew['aantal']."',
		'".$rsnew['site']."')"); 
		return TRUE;
					}                             

Regels 3 t/m 15 kunnen nog steeds weg.
Die doen helemaal niks en zijn dus overbodig.
treden jullie wel eens op in 's-Hertogenbosch?

zo ja: daar gaat je onderste insert-query op onderuit.

escapen die invoer ....

Reageren