Ik ben niet zo goed met deze talen, ben begonnen met het leren van dit.
Toen ik mijn MyBB 1.6x board naar SMF2.0 wilde converten, kreeg ik deze error.

Wat moet ik hiermee?

Converting...
Converting members... Unsuccessful!
This query:
if(!preg_match('/\d{4}-\d{2}-\d{2}/', $row['birthdate']))
$row['birthdate'] = '0001-01-01';
Caused the error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if(!preg_match('/\d{4}-\d{2}-\d{2}/', $row['birthdate']))
$row['birthdate'] = '' at line 1
Volgens de error staat die if() regel midden in de query.
En hoe is dit dan op te lossen, of moeten jullie de complete sourcecode daar voor hebben?
Niet compleet. Alleen het stukje rond die query.
die if hoort denk ik niet in de query.
Waarmee ben je MyBB 1.6x board naar SMF2.0 aan het converteren? Is dat meegeleverde code of heb je zelf iets geschreven? Als het meegeleverde code is dan kan je misschien bij de bron cq de makers wat navragen?
Heb een converter gedownload vanaf de SMF2.0 website, en heb daar ook op de forums gevraagt hoe en wat, maar ik ben (schijnbaar) de enige met deze error, en niemand kan me vertellen wat het is, daarom maar hier.

Ik kan eventueel de complete .sql file posten, of de download posten, als iemand even voor mij wil kijken :)
Djurre Visser op 14/09/2011 11:15:23

Ik kan eventueel de complete .sql file posten..




Liever de relevante delen.
Zal even kijken of ik die er uit kan halen, want ik ben nog niet zo goed met de taal.
Eens even kijken welke dingen ik dan moet posten, geef me een minuutje.

EDIT:

/* fix invalid birthdates */
if(!preg_match('/\d{4}-\d{2}-\d{2}/', $row['birthdate']))
	$row['birthdate'] = '0001-01-01';

__

---* {$to_prefix}members
SELECT
	uid AS id_member, SUBSTRING(username, 1, 255) AS member_name,
	SUBSTRING(username, 1, 255) AS real_name, email AS email_address,
	SUBSTRING(password, 1, 64) AS passwd, SUBSTRING(salt, 1, 8) AS password_salt,
	postnum AS posts, SUBSTRING(usertitle, 1, 255) AS usertitle,
	lastvisit AS last_login, IF(usergroup = 4, 1, 0) AS id_group,
	regdate AS date_registered, SUBSTRING(website, 1, 255) AS website_url,
	SUBSTRING(website, 1, 255) AS website_title,
	SUBSTRING(icq, 1, 255) AS icq, SUBSTRING(aim, 1, 16) AS aim,
	SUBSTRING(yahoo, 1, 32) AS yim, SUBSTRING(msn, 1, 255) AS msn,
	SUBSTRING(signature, 1, 65534) AS signature, hideemail AS hide_email,
	SUBSTRING(buddylist, 1, 255) AS buddy_list,
	SUBSTRING(regip, 1, 255) AS member_ip, SUBSTRING(regip, 1, 255) AS member_ip2,
	SUBSTRING(ignorelist, 1, 255) AS pm_ignore_list,
	timeonline AS total_time_logged_in,
	CASE
		WHEN birthday = '' THEN '0001-01-01'
		ELSE CONCAT_WS('-', RIGHT(birthday, 4), SUBSTRING(birthday, LOCATE('-', birthday) + 1, LOCATE('-', birthday, LOCATE('-', birthday) + 1) - LOCATE('-', birthday) - 1), LEFT(birthday, LOCATE('-', birthday) - 1))
	END AS birthdate
FROM {$from_prefix}users;
---*
Het lijkt erop dat dit geen onderdeel van die query is, dus comment die regel 1 t/m 3 maar gewoon helemaal.
Zal eens kijken, even testen.

[size=xsmall]Toevoeging op 14/09/2011 11:43:35:[/size]

Nu ik dat gedaan heb krijg ik deze error..

Converting...
Converting members...Wrong value type sent to the database. Date expected. (birthdate)

Reageren