|
Не работает bind_param | ☑ | ||
---|---|---|---|---|
0
megabax
19.05.15
✎
09:12
|
Добскажите пожалуйста, почему может не работать bind_param?
вот такой код: echo "Начало<br>"; include_once("db.php"); include_once("ini.php"); include_once("shopconfing.php"); echo "Подключили модули<br>"; $conf=InitConf(); //подключение к базе данных джумлы if(!mysql_connect($conf['HostName'],$conf['UserName'],$conf['Password'])) { echo "<h1><font color=red>Error connect to ".$DBName."!<br>".mysql_error()."<br></font></h1>"; } mysql_select_db($conf['DBName']); echo "Подключились к базе джумлы<br>"; //подключение к базе данных движка $db=new EP_DBService(); $db->HostName=DB_HOST; $db->UserName=DB_USER; $db->Password=DB_PASSWORD; $db->DBName=DB_NAME; $db->Prefix=DB_PREFIX; echo "Подключились к базе движка<br>"; //запрос к статьям mysql_query('SET NAMES utf8'); $query="select * from jos_content "; $rows_selection=mysql_query($query); echo "Выполнили запрос к джумле<br>"; if($rows_selection) { echo "Запрос выполнился нормально<br>"; } else { echo "<h1><font color=red>Ошибка запроса: ".mysql_error()."</font></h1>"; echo "<h2><font color=blue>Запрос: ".$query."</font></h2>"; exit(); } $mysqli=$db->mysqli_connect(); $count=mysql_num_rows($rows_selection); echo "В запросе $count строк<br>"; $mysqli->query('SET NAMES utf8'); //id //title //code //introtext+fulltext //sectionid //created //modified //access //hits for($i=1; $i<=$count; $i++) { $arr=mysql_fetch_array($rows_selection); //$text=$arr["introtext"].$arr["fulltext"]; $query = "insert into ep_articles(name) values (?)"; try { $stmt = $mysqli->prepare($query); } catch (Exception $exc) { //echo $query."\n".$stmt->errorInfo(); echo "ERROR PREPARE"; } echo "Подготовли запрос $i<br>"; $stmt->bind_param('s',"wwwwww"); //echo "<p><b>".$arr["title"]." ".$arr["id"]." ".$text." "."</b></p>"; /*try { $stmt->bind_param('s',"eeeeee"); //s - строка, d - число } catch (Exception $exc) { //echo $stmt->errorInfo(); echo "ERROR bind_param"; }*/ echo "Вставили параметры $i<br>"; if(!$stmt->execute()) { echo "ERROR"; } /*echo "Зашли в цикл $i<br>"; $arr=mysql_fetch_array($rows_selection); $text=$arr["introtext"].$arr["fulltext"]; $query = "insert into ep_articles(name,code,contect,sectioncode,date,date_modify,access,hits) values ('".$arr["title"]."',".$arr["id"]; $query=$query.",?,".$arr["sectionid"].",".$arr["created"].",".$arr["modified"].",".$arr["access"].",".$arr["hits"].")"; //$query=$query.",'".$text."',".$arr["sectionid"].",".$arr["created"].",".$arr["modified"].",".$arr["access"].",".$arr["hits"].")"; echo "Сформировали запрос $i<br>"; $stmt = $mysqli->prepare($query); echo "Подготовли запрос $i<br>"; $stmt->bind_param('s',$text); echo "Вставили параметры $i<br>"; if(!$stmt->execute()) { echo "ERROR"; } /*$stmt->bind_result($res); $res=$mysqli->query($query); if(!$res) { echo "Ошибка добавления статьи ".$query; return 0; }*/ //echo $arr["title"]."<br>"; } echo "Закачали статьи<br>"; Доходит до строк $stmt->bind_param('s',"wwwwww"); и дальше валиться. Просто преращаеся выполенние и все. Почему? Пробовал обернуть в try catch, не выдает никакой ошибки. |
|||
1
фобка
19.05.15
✎
09:15
|
Форум не перепутал?
|
|||
2
megabax
19.05.15
✎
09:24
|
(1) Ну я же все таки в секции web-мастеринк задал вопрос....
|
|||
3
zenik
19.05.15
✎
09:25
|
По моему запрос подготавливают 1 раз, и циклом потом bind, а не наоборот...
|
|||
4
megabax
19.05.15
✎
09:33
|
(3) Вынес подготовку запроса во вне цикла, все равно не работает:
<?php echo "Начало<br>"; include_once("db.php"); include_once("ini.php"); include_once("shopconfing.php"); echo "Подключили модули<br>"; $conf=InitConf(); //подключение к базе данных джумлы if(!mysql_connect($conf['HostName'],$conf['UserName'],$conf['Password'])) { echo "<h1><font color=red>Error connect to ".$DBName."!<br>".mysql_error()."<br></font></h1>"; } mysql_select_db($conf['DBName']); echo "Подключились к базе джумлы<br>"; //подключение к базе данных движка $db=new EP_DBService(); $db->HostName=DB_HOST; $db->UserName=DB_USER; $db->Password=DB_PASSWORD; $db->DBName=DB_NAME; $db->Prefix=DB_PREFIX; echo "Подключились к базе движка<br>"; //запрос к статьям mysql_query('SET NAMES utf8'); $query="select * from jos_content "; $rows_selection=mysql_query($query); echo "Выполнили запрос к джумле<br>"; if($rows_selection) { echo "Запрос выполнился нормально<br>"; } else { echo "<h1><font color=red>Ошибка запроса: ".mysql_error()."</font></h1>"; echo "<h2><font color=blue>Запрос: ".$query."</font></h2>"; exit(); } $mysqli=$db->mysqli_connect(); $count=mysql_num_rows($rows_selection); echo "В запросе $count строк<br>"; $mysqli->query('SET NAMES utf8'); //id //title //code //introtext+fulltext //sectionid //created //modified //access //hits $query = "insert into ep_articles(name) values (?)"; try { $stmt = $mysqli->prepare($query); } catch (Exception $exc) { //echo $query."\n".$stmt->errorInfo(); echo "ERROR PREPARE"; } echo "Подготовли запрос вне цикла<br>"; for($i=1; $i<=$count; $i++) { $arr=mysql_fetch_array($rows_selection); //$text=$arr["introtext"].$arr["fulltext"]; echo "Сейчас буем вставлять параметры $i<br>"; $stmt->bind_param('s',"wwwwww"); //echo "<p><b>".$arr["title"]." ".$arr["id"]." ".$text." "."</b></p>"; /*try { $stmt->bind_param('s',"eeeeee"); //s - строка, d - число } catch (Exception $exc) { //echo $stmt->errorInfo(); echo "ERROR bind_param"; }*/ echo "Вставили параметры $i<br>"; if(!$stmt->execute()) { echo "ERROR"; } /*echo "Зашли в цикл $i<br>"; $arr=mysql_fetch_array($rows_selection); $text=$arr["introtext"].$arr["fulltext"]; $query = "insert into ep_articles(name,code,contect,sectioncode,date,date_modify,access,hits) values ('".$arr["title"]."',".$arr["id"]; $query=$query.",?,".$arr["sectionid"].",".$arr["created"].",".$arr["modified"].",".$arr["access"].",".$arr["hits"].")"; //$query=$query.",'".$text."',".$arr["sectionid"].",".$arr["created"].",".$arr["modified"].",".$arr["access"].",".$arr["hits"].")"; echo "Сформировали запрос $i<br>"; $stmt = $mysqli->prepare($query); echo "Подготовли запрос $i<br>"; $stmt->bind_param('s',$text); echo "Вставили параметры $i<br>"; if(!$stmt->execute()) { echo "ERROR"; } /*$stmt->bind_result($res); $res=$mysqli->query($query); if(!$res) { echo "Ошибка добавления статьи ".$query; return 0; }*/ //echo $arr["title"]."<br>"; } echo "Закачали статьи<br>"; ?> |
|||
5
zenik
19.05.15
✎
09:45
|
Не мучайся, делай запись без подготовленного запроса. Выгоды не получишь, а когда вырастешь - переделаешь :)
|
|||
6
megabax
19.05.15
✎
09:47
|
(5) В том то и дело, что без параметрического запроса никак не получается, нужно вставить в таблицу текс, который может содержать и кавычки, и апострофы а так же и то и другое вместе.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |