2013-05-14 2 views
0

Я хочу сделать свой собственный php toolkit вместо того, чтобы использовать один из многих фреймворков, особенно потому, что они следуют MVC, чего я не ищу сейчас. Я хочу начать с основ и вспомнить OO, я хочу, чтобы простой php mysql подключался в отдельном файле (config.php), с запросом в другом файле (index.php)php Toolkit, а не каркас

Я пробовал это, но это не работает. Что я делаю не так?

config.php в корне

<?php 
$dsn = 'mysql:dbname=testdb;host=localhost'; 
$username = 'root'; 
$password = 'root'; 
$dbh = new PDO($dsn, $username, $password); 
?> 

index.php в корне

<html> 
<body> 
<form action="" method="POST"> 
    <input type="text" name="search" autofocus /> 
    <input type="submit" value="search" /> 
</form> 
</body> 
</html> 

<?php 
require_once 'config.php'; 
$query = "SELECT * FROM table WHERE field = '" . $search . "'"; 
$results = mysql_query($query); 
while($row = mysql_fetch_array($results)){ ?> 
<li> 
<?php echo $row['field']; ?> 
</li> 
<?php } ?> 

UPDATE: Пожалуйста, медведь со мной, мои знания на это новое. Спасибо.

+1

Возможно, вам нужно потратить некоторое время, чтобы ознакомиться с существующими инфраструктурами и как они работают, прежде чем вы попытаетесь создать свои собственные? – duskwuff

+0

Если вас интересуют «рамки», рассмотрите возможность просмотра Zend Framework и Symfony2. ZF - это компонентная структура, что означает, что вы можете использовать столько или меньше, сколько хотите. Symfony2 является полным стеком, что означает, что большинство людей используют его как есть, но оно содержит ряд компонентов, которые могут использоваться как автономные, такие как ZF. Если вы делаете это как упражнение для обучения, то достаточно справедливы, но если оно предназначено для производства, вы должны использовать существующую систему. – halfer

+0

Я смотрел на это наоборот. Я хочу научиться строить свои собственные с нуля, чтобы знать и понимать, как работают другие структуры. Это и обучение php постепенно. Вы считаете, что лучше делать то, что вы предложили? Я думаю, что изучение ручной передачи было бы первым шагом перед автоматическим. –

ответ

3

Вы смешиваете mysql_* и PDO ... Напишите ваши вопросы в PDO и избавьтесь от этого бизнеса mysql_*.

+0

Хорошо, как мне это сделать, решение Михала (ниже) соответствует счету. Я попробовал, и это не сработало. –

1

вместо

$query = "SELECT * FROM table WHERE field = '" . $search . "'"; 
$results = mysql_query($query); 

использовать что-то вроде

$stmt = $dbh->prepare("SELECT * FROM table WHERE field = :search"); 
$params = array(':search' => $search); 

$res = $stmt->execute($params); 

$results = $res->fetchAll(); 
.. 
+0

Пробовал, не работал. Я должен сказать, что я новичок в этом. Шаг назад, используя два вышеприведенных файла, как я могу убедиться, что мое соединение и выбор db работают нормально? –

+0

Изменено мое подключение к mysql и обратно к обычным запросам, все равно ничего. –

0

Чтобы убедиться, что файл ваш config.php включен только распечатать свою переменную $ DBh после требуется заявление в index.php

require_once 'config.php'; 
print_r($dbh); 

Вы должны получить какую-то распечатку с ручкой.

+0

Спасибо, Майкл, ваш комментарий дал мне идею. Пошел с [this] (http://snipplr.com/view/65082/mysql-connection). –

+0

@phptinkerer вы действительно не должны использовать эти функции ... – brbcoding

+0

@brbcoding ok. Вы посоветовали, что я не должен использовать, можете ли вы рассказать/объяснить, что я должен использовать, и как я это делаю. –