2012-05-29 4 views
-1

Я пытаюсь вызвать базу данных в первый раз в PHP, и этот запрос вызывает нарушение моего кода. Обратите внимание, что я тестировал соединение, чтобы быть хорошим. Претендент - mysql_query(). Кто-нибудь может понять, что может пойти не так? Имя таблицы - «пользователи», а запись в столбце «Имя» - «mvalentine». Насколько мне известно.PHP Query Breaking

dbInit.php

<?php 
$connection = mysql_connect('localhost', 'root', 'password'); 
$db = mysql_select_db('scaleup'); 
if ($db) { 
    $user = mysql_query("SELECT ID FROM 'users' WHERE 'Name' = 'mvalentine'"); 
} 
else { 
die ('Error 01: Connection to database failed.'); 
} 

?> 

Этот модифицированный код теперь возвращается что-то. Значение «пользователи» в вызове Ajax теперь возвращается «ложь»

Значение возвращается должно быть «1»

ответ Аякса:

<?php 
include('dbInit.php'); 
include('objects.php'); //irrelevant, all code working properly 

$layout = new Layout(); 
$bids = new Bids(); 
$out = array('layout' => $layout->_board, 'height' => $layout->_height, 'width' => $layout->_width, 
       'bids' => $bids->_board, 'maxBids' => $bids- >_maxBids, 'users' => $user); 
$out = json_encode($out); 
echo $out; 
?> 
+1

Какая ошибка вы получаете? – j08691

+0

Предупреждение: mysql_query() ожидает параметр 2, чтобы быть ресурсом, строка, заданная в C: \ WAMP \ scaleUp \ назад \ dbInit.php на линии
valen

+0

Строка соединения хорошо. $ db = true – valen

ответ

1

Похоже, вы ждете $ пользователя содержать идентификатор пользователя, но это будет на самом деле содержит ресурс, содержащий все возвращенные строки. Для того, чтобы получить идентификатор пользователя, вам нужно что-то вроде этого:

$result = mysql_query("SELECT ID FROM `users` WHERE `Name` = 'mvalentine'"); 

if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} else { 
    $row = mysql_fetch_assoc($result); 
    $user = $row['ID']; 
} 

Кроме того, принять к сведению другие комментарии и ответы, касающиеся стиля и предпочтений MySQLi и PDO для такого рода вещи.

+0

Ahh wicked, я буду. Это потрясающе. Большое спасибо! – valen

+0

Нет проблем. Я рад, что это помогло. – jncraton

1

Что такое «$ дб» в вашем если заявление?

Для подключения к базе данных вы должны использовать «mysql_connect» и «mysql_select_db».
Например,

<?php 
    $connection = mysql_connect('localhost', 'root', 'password'); 
    $db = mysql_select_db('database_name'); 
    if($connection) 
    { 
     if($db) 
     { 
      //query here 
     } else { 
      die("Couldn't connect to mysql database ".mysql_error()); 
     } 
    } else { 
     die("Couldn't connect to mysql host ".mysql_error()); 
    } 
?> 

Кроме того, это хорошая практика, чтобы окружить имена таблиц и столбцов с простым характером, как так

mysql_query("SELECT * FROM `tablename` WHERE `column_name` = 'value'"); 
+0

Пожалуйста, проверьте изменения, похоже, что это помогло :) – valen

+0

О, хорошо, тогда переименуйте мою переменную $ db в базу данных $ или что угодно. Вам просто нужно убедиться, что вы подключаетесь к базе данных. Удачи! –

1

я не могу проверить это прямо сейчас, но я верю тебе может иметь синтаксическую ошибку в запросе:

mysql_query("SELECT ID FROM 'users' WHERE 'Name' = 'mvalentine'"); 

столбцы и таблицы имен, если вы хотите процитировать их, следует использовать заднюю клещу:

$result = mysql_query("SELECT ID FROM `users` WHERE `Name` = 'mvalentine'"); 

Затем измените остальную часть вашего кода на самом деле принести данные пользователя:

$result = mysql_query("SELECT ID FROM `users` WHERE `Name` = 'mvalentine'") or die("Query failed"); 
$row = mysql_fetch_assoc($result); 
$user = $row['ID']; 
+0

Это ломало код :( – valen

+0

Сломал код, как –

+0

Ajax ответ ->Предупреждение: json_encode() [function.json-encode]: тип не поддерживается, кодируется как нуль в C: \ WAMP \ scaleUp \ назад \ boardSetCGI. PHP на линии
valen