我第一次尝试在PHP中调用数据库,此查询导致我的代码中断。请注意,我已经测试了连接是否良好。罪魁祸首是mysql_query()。任何人都可以发现可能出错的地方吗?表名称为"用户","名称"列下的条目为"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"
阿贾克斯回应:
<?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;
?>
似乎您希望$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对此类事物的偏好。
你的 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'");
我现在
无法验证这一点,但我相信您的查询中可能存在语法错误:
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'];