我正试图在PHP中第一次调用数据库,而这个查询导致我的代码中断。请注意,我已经测试了连接是好的。罪魁祸首是mysql_query()。有人能发现可能出错的地方吗?表名为“users”,“Name”列下的条目为“mvalentine”。据我所知,一切都符合案例。
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调用中的'users'值现在返回“false”
返回的值应为'1'
ajax回复:
<?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;
?>
答案 0 :(得分:1)
if语句中的“$ db”是什么?
要连接到数据库,必须使用“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'");
答案 1 :(得分: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'];
答案 2 :(得分:1)
您似乎期望$ user包含用户ID,但它实际上包含一个包含所有返回行的资源。要获取用户ID,您需要这样的内容:
$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对此类事物的偏好的其他评论和答案。