Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с параметризированными запросами
 
 автор: Рафик   (27.05.2007 в 23:12)   письмо автору
 
 

На эту строчку $stmt->bind_param("isd",$year,$model,$accel); он ругается так:
Fatal error: Call to a member function bind_param() on a non-object in C:\Documents and Settings\Admin.CENTR\Мои документы\Web\php\MySql\cars\WriteToDB.php on line 14
Тоже с $stmt->execute();

Привожу полный текст:
файл ReadFromDB
$conn = mysqli_connect('localhost','root','','test');
$stmt = $conn->prepare("SELECT * FROM alfas ORDER BY year");
$stmt->execute();
$stmt->bind_result($year, $model, $accel);
print "<table>\n";
print "<tr><th>Model</th><th>0-100 km/h</th></tr>\n";
while ($stmt->fetch()) {
print "<tr><td>$year $model</td>{$accel} sec</td>\n"; }
print "</table>\n";


файл WriteToDB

$conn = mysqli_connect("localhost","root","","test");
$conn->query("CREATE TABLE alfas"."(year INTEGER, model VARCHAR(50), accel REAL)");
$stmt = $conn->prepare("INSERT INTO alfas VALUES(?,?)");
$stmt->bind_param("isd",$year,$model,$accel);
$year = 2001;
$model = '156 2.0 Selespeed';
$accel = 8.6;
$stmt->execute();
$year = 2003;
$model = '147 2.0 Selespeed';
$accel = 9.3;
$stmt->execute();

$year = 2004;
$model = '156 GTA SportWagon';
$accel = 6.3;
$stmt->execute();


Заменял функциями-аналогами
myqsl_stmt_bind_param($stmt,"isd",$year,$model,$accel);
mysql_stmt_execute($stmt);


Появлялись другие проблемы - должны же работать методы объекта $stmt
Спасибо заранее.

   
 
 автор: Рафик   (30.05.2007 в 01:50)   письмо автору
 
   для: Рафик   (27.05.2007 в 23:12)
 

У кого есть мысли - ответьте пожалуйста!

   
 
 автор: Trianon   (30.05.2007 в 01:55)   письмо автору
 
   для: Рафик   (30.05.2007 в 01:50)
 

Вероятно, $stmt = $conn->prepare("INSERT INTO alfas VALUES(?,?)"); вернул false, а Вы это проигнорировали....

Почему? Кто знает... может число параметров не совпало с числом столбцов... может таблицы нету....может еще что...
Кстати, таблица, вероятно, не должна быть создана - ошибки в запросе CREATE TABLE налицо....
Попробуйте руками таблицу создать - запишите правильный запрос.

   
 
 автор: Рафик   (30.05.2007 в 07:16)   письмо автору
 
   для: Trianon   (30.05.2007 в 01:55)
 

Я думаю, что таблицу он создает, $stmt = $conn->prepare("INSERT INTO alfas VALUES(?,?)")
не должен возвращать false. Вообще мне кажется, что это либо синтаксическая ошибка или с объектами что-то намудрено. Совета послушаюсь - создам вручную таблицу. Если у кого-то есть мысли по этому поводу - напишите пожалуйста!

   
 
 автор: Trianon   (30.05.2007 в 09:47)   письмо автору
 
   для: Рафик   (30.05.2007 в 07:16)
 

>Я думаю, что таблицу он создает, $stmt = $conn->prepare("INSERT INTO alfas VALUES(?,?)")
>не должен возвращать false.

------ mysqli_prepare() --------
Возвращаемые значения
mysqli_prepare() returns a statement object or FALSE if an error occured.
------

   
 
 автор: Рафик   (30.05.2007 в 22:05)   письмо автору
 
   для: Trianon   (30.05.2007 в 09:47)
 

Если честно - это выдает отладчик. Думаете все равно mysqli_prepare() поможет?

   
 
 автор: Trianon   (30.05.2007 в 22:15)   письмо автору
 
   для: Рафик   (30.05.2007 в 22:05)
 

Я просто процитировал мануал.
Вы сказали, что метод, который Вы применяете, не возвращает false.
Я показал, что возвращает. И что неправильный запрос - вероятная причина дальнейшей ошибки. При чем тут отладчик?

   
 
 автор: Рафик   (30.05.2007 в 22:54)   письмо автору
 
   для: Trianon   (30.05.2007 в 22:15)
 

Отладчик не даст мне проверить mysqli_prepare. Спасибо за внимание. Попробуем повозиться сегодня!

   
 
 автор: Рафик   (31.05.2007 в 22:52)   письмо автору
 
   для: Trianon   (30.05.2007 в 22:15)
 

Действительно mysqli_prepare() возвращает false. Количество столбцов -3 - пробовал в sql-запросе:
$stmt = $conn->prepare("INSERT INTO alfas VALUES(?,?)");
3 ?,?,? писать. НЕ помогает - какие еще возможные причины могут быть.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования