Php 我的SQLi(未选择数据库)
在阅读了很多关于我应该使用MySQLi而不是MySQL的反馈后,我试图改变我的连接。但是,我认为我现在有点混淆了,因为显示“未选择任何数据库”:Php 我的SQLi(未选择数据库),php,mysqli,connect,Php,Mysqli,Connect,在阅读了很多关于我应该使用MySQLi而不是MySQL的反馈后,我试图改变我的连接。但是,我认为我现在有点混淆了,因为显示“未选择任何数据库”: <?php //mysql_connect('localhost', 'root', 'secret'); //mysql_select_db('edgeserver'); $mysqli_connection = new MySQLi('localhost', 'root', 'secret', 'edgeserver'); if ($my
<?php
//mysql_connect('localhost', 'root', 'secret');
//mysql_select_db('edgeserver');
$mysqli_connection = new MySQLi('localhost', 'root', 'secret', 'edgeserver');
if ($mysqli_connection->connect_error) {
echo "Not connected, error: " . $mysqli_connection->connect_error;
}
else {
echo "Connected.";
}
$sql = "update SessionLogs
set BetStatusID = 2
where resultID = 0
and eventstatusid <> 2
and betstatusid <> 2
limit 1
";
$sql2 = "update SessionLogs
set EventStatusID = 2
where resultID = 0
and eventstatusid <> 2
and betstatusid <> 2
limit 1
";
$sql3 = "SELECT SessionLogs.sessionid, SessionLogs.eventid, Result.Winner, Odds.OddsA,
Odds.OddsB, EventStatus.EventStatus, BetStatus.BetStatus, EventInfo.Title,
EventInfo.Opponent1, EventInfo.Opponent2
FROM SessionLogs INNER JOIN
Result ON SessionLogs.resultid = Result.ResultID INNER JOIN
Odds ON Result.OddsID = Odds.OddsID INNER JOIN
EventStatus ON SessionLogs.eventstatusid = EventStatus.EventStatusID INNER JOIN
BetStatus ON SessionLogs.betstatusid = BetStatus.BetStatusID INNER JOIN
EventInfo ON SessionLogs.slotid = EventInfo.SlotID
where activestatusid > 0
and SessionLogs.betstatusid = 2
and sessionlogs.eventstatusid = 2
Order by EventID desc
LIMIT 1";
$res = mysql_query($sql);
$res2 = mysql_query($sql2);
$res3 = mysql_query($sql3);
$xml = new XMLWriter();
$xml->openURI("php://output");
$xml->startDocument();
$xml->setIndent(true);
$xml->startElement('BetCancel');
$xml->writeAttribute('timestamp', date('c'));
if($res3 === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while ($row = mysql_fetch_assoc($res3)) {
$xml->startElement("Event");
$xml->writeAttribute('sessionid', $row['sessionid']);
$xml->writeAttribute('eventid', $row['eventid']);
$xml->writeAttribute('Winner', $row['Winner']);
$xml->writeAttribute('OddsA', $row['OddsA']);
$xml->writeAttribute('OddsB', $row['OddsB']);
$xml->writeAttribute('EventStatus', $row['EventStatus']);
$xml->writeAttribute('BetStatus', $row['BetStatus']);
$xml->writeAttribute('Title', $row['Title']);
$xml->writeAttribute('Opponent1', $row['Opponent1']);
$xml->writeAttribute('Opponent2', $row['Opponent2']);
$xml->endElement();
}
$xml->endElement();
header('Content-type: text/xml');
$xml->flush();
?>
openURI(“php://output");
$xml->startDocument();
$xml->setIndent(true);
$xml->startElement('BetCancel');
$xml->writeAttribute('timestamp',date('c');
如果($res3==FALSE){
die(mysql_error());//TODO:更好的错误处理
}
而($row=mysql\u fetch\u assoc($res3)){
$xml->startElement(“事件”);
$xml->writeAttribute('sessionid',$row['sessionid']);
$xml->writeAttribute('eventid',$row['eventid']);
$xml->writeAttribute('Winner',$row['Winner']);
$xml->writeAttribute('OddsA',$row['OddsA']);
$xml->writeAttribute('OddsB',$row['OddsB']);
$xml->writeAttribute('EventStatus',$row['EventStatus']);
$xml->writeAttribute('BetStatus',$row['BetStatus']);
$xml->writeAttribute('Title',$row['Title']);
$xml->writeAttribute('Opponent1',$row['Opponent1']);
$xml->writeAttribute('Opponent2',$row['Opponent2']);
$xml->endElement();
}
$xml->endElement();
标题('Content-type:text/xml');
$xml->flush();
?>
请帮助。您的代码中有
mysql
。将其切换到mysqli
。
您还可以将连接设置为变量。将其设置为$db
或其他值
这:
$res=mysql\u查询($sql);
$res2=mysql\u查询($sql2);
$res3=mysql\u查询($sql3)代码>
应该是这样的:
$res=$db->query($sql);
$res2=$db->query($sql2);
$res3=$db->query($sql3)代码>
与mysql的其他事件一样,您也有了一个良好的开端
见下面我的评论:
//Initialize connection - good.
$mysqli_connection = new MySQLi('localhost', 'root', 'secret', 'edgeserver');
if ($mysqli_connection->connect_error) {
echo "Not connected, error: " . $mysqli_connection->connect_error;
}
else {
echo "Connected.";
}
//... Sql statements go here
//You are using mysql_query instead of mysqli query functions
//therefore replace the lines below.
//$res = mysql_query($sql);
//$res2 = mysql_query($sql2);
//$res3 = mysql_query($sql3);
//Use these for queries
if ($res = $mysqli_connection->query($sql)
{
//if sql query succeeds
}
//Use the pattern above for the other sql queries.
尝试将localhost更改为127.0.0.1。另外,我不知道您是否将数据库设置为使用密码,但在某些情况下,密码可以设置为空字符串。您不能只更改连接。您也不能再使用mysql\u query
。您必须使用mysqli\uuu
函数。非常感谢,它正在工作。出于兴趣,MySQLi有什么好处?它只是一个较新版本的mysql.*
函数,具有面向对象的界面。不过,我将向您介绍如何在PHP中使用ORM进行查询。编写没有参数绑定的查询会使应用程序易于SQL注入。ORM将带来一层安全性和易用性。