Hallo,
bin jetzt kein Spezialist was PDO angeht ...
$bu_name = 'test';
$groesse_arr = count($result);
$sql = 'EXEC butablecheck (?)';
$stmt = $db->prepare($sql);
$stmt->bindParam(1, $bu_name);
for($j=0;$j<=$groesse_arr-1;$j++) {
$bu_name = $result[$j][0];
var_dump($result[$j][0]);
var_dump($bu_name);
$stmt->execute();
}
die Parameternotation "(?)" erscheint mir gewagt ... ein einfaches ? ohne die Klammern sollte es auch tun. Kannst du bindParam auch mit einem Variablennamen, z.b. @P1 machen. @P1 ist unter MS SQL die gängige notation für Parameter.
Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42000]: Syntax error or access violation: 102 [Microsoft][ODBC SQL Server Driver][SQL Server]Falsche Syntax in der Nähe von '@tablename'. (SQLExecute[102] at ext\pdo_odbc\odbc_stmt.c:133)
Da dein "EXEC butablecheck" nichts von einem Parameter @tablename hält, kann es entweder daran liegen, dass
- in der Prozedur die Verwendung von @tablename syntaktisch inkorrekt ist
- oder du den Aufruf der Prozedur mit mit dem Parameternamen machen musst ... also so z.b.
EXEC butablecheck @tablename = ?
->bindParam(1, $bu_name)
wobei ich mir frage ... müsste der erste Parameter nicht mit Index 0 referenziert sein ... fängt nicht alles immer irgendwie bei 0 an?
Der deutsche Teil der Fehlermeldung kommt vom ODBC Treiber (Betriebssystemsprache) bzw vom MS SQL Server selbst ...
Cheers, Frank