Php 我的SQLi(未选择数据库)

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

在阅读了很多关于我应该使用MySQLi而不是MySQL的反馈后,我试图改变我的连接。但是,我认为我现在有点混淆了,因为显示“未选择任何数据库”:

<?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将带来一层安全性和易用性。