Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysqli更新未更新,尽管没有错误_Php_Mysqli_Sql Update - Fatal编程技术网

Php mysqli更新未更新,尽管没有错误

Php mysqli更新未更新,尽管没有错误,php,mysqli,sql-update,Php,Mysqli,Sql Update,我正在尝试调整我的代码,它在SELECT中工作,以执行更新。这里没有错误,但它不更新任何内容,甚至不进入循环。它应该更新所选日期的房间类型($value) 我回显了所有值以检查它们是否正确 $bdd = mysqli_connect('localhost', 'root', '', 'webpage') $roomty = 1;

我正在尝试调整我的代码,它在SELECT中工作,以执行更新。这里没有错误,但它不更新任何内容,甚至不进入循环。它应该更新所选日期的房间类型(
$value

我回显了所有值以检查它们是否正确

$bdd = mysqli_connect('localhost', 'root', '', 'webpage')
$roomty = 1;                                                                                        
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
}

foreach ($_SESSION['datesBooked_1_month'] as $key => $value)
{
    $stmt = mysqli_stmt_init($bdd);
    if ( mysqli_stmt_prepare( $stmt , "UPDATE '".$_SESSION['tab_from_month_year']."'
SET '".$_SESSION['roomtype_x']."'='".$_SESSION['roomtype_x']."' + ? WHERE day = ?"))
    {
        mysqli_stmt_bind_param( $stmt ,'is', $roomty , $value );
        mysqli_stmt_execute( $stmt );
        mysqli_stmt_close($stmt);
        echo " Booked !<br /> "; 
    }           
}
$bdd=mysqli\u connect('localhost','root','webpage'))
$roomty=1;
if(mysqli\u connect\u errno()){
printf(“连接失败:%s\n”,mysqli_Connect_error());
}
foreach($\会话['datesBooked\u 1\u month']作为$key=>$value)
{
$stmt=mysqli\u stmt\u init($bdd);
如果(mysqli_stmt_prepare($stmt,“UPDATE.”.$_SESSION['tab_from_month\u year'])。“'
设置“.$”会话['roomtype\ux']。“=”。$”会话['roomtype\ux']。“+?其中日期=?”)
{
mysqli_stmt_bind_param($stmt,'is',$roomty,$value);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
echo“已预订!
”; } }
如果这是选择数据库所需的完整代码,则当前该语句将发送到服务器,但不会发送到任何数据库,因此不会出现任何错误。你应使用:

mysqli_select_db("You database goes here");

我发现问题在于双引号之前的单引号。它似乎可以很好地使用双引号,如下所示:

if ( mysqli_stmt_prepare( $stmt ,  "UPDATE ".$_SESSION['tab_from_month_year']." SET  ".$_SESSION['roomtype_x']." = ".$_SESSION['roomtype_x']." + ?  WHERE  day = ?"))

请使用PHP的新MySql驱动程序尝试以下代码

  • 你把引号放在一个整数值上,这是错误的
  • 您是否用数字命名列?那不舒服
  • 您确定$value是字符串吗
  • 为什么在foreach循环中使用$key=>$value
代码如下:

/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=webpage;host=127.0.0.1';
$user = 'root';
$password = 'dbpass'; #put here yor password

try {
    $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    }

foreach $_SESSION['datesBooked_1_month'] as  $value) {
    #I hope that following variables don't contain space
    $query = "UPDATE " .$_SESSION['tab_from_month_year']; 
    $temp = $_SESSION['roomtype_x'] + $roomty ;
    #you wrote that $value is a string, are you sure?
    $query .= " SET ".$_SESSION['roomtype_x']. "=$temp WHERE day='$value'"   ;
    $dbh->query($query);
    }

它甚至没有进入循环
然后
$\u会话['datesBooked\u 1\u month']
由于您显示的代码之外的原因为空,否?我注意到缺少一个
在第一行。@pekka var_dump($_SESSION['datesBooked\u 1\u month'])给了我正确的答案values@Sumurai8是的,但是这里没有,我的代码中没有忘记。使用mysqli连接到MySQL数据库的语法:
$mysqli=newmysqli(“localhost”、“user”、“password”、“database”)@aliasm2k我是程序式的,不是面向对象的。您可以使用$mysqli=mysqli_connect(“mysql9.000webhost.com”、“a5869705_test”、“cycling1”);然后使用mysqli_select_db($mysqli,“a5869705_测试”);是 啊这确实是“双引号之前的单引号”,这是另一个需要学习的魔法圣歌。@你的常识我不确定你的意思,但我是说,没有单引号,现在一切正常。i、 e:因为我删除了它们。@SunnyOne如果这是你的答案,那就验证一下。无论如何,您应该使用“`”(backtick)而不是单引号或“nothing”。